pem,等保存密鑰的檔案看不懂?不知道怎么生成?不知道怎么恢復?
-----BEGIN RSA PRIVATE KEY-----
3/k2OLWwpTzaTYeHPbyYEEGFuVLEh86gm+fBt72DkiA=
-----END RSA PRIVATE KEY-----
或許,可能,大概,假裝你遇到過上面這樣的檔案內容,
你(沒錯,就是你,不是我)在網上隨便找了一個生成密鑰檔案的代碼,
把自己的私鑰放上去運行一下,誒!居然沒報錯,你樂開了花,私鑰成功保存在檔案里面了,
然而快樂總是短暫的,你打開檔案后(得到上面的內容),
一臉疑惑:“這是什么鬼亂七八糟,八糟亂七的東西啊?”,這個是加密過后的?還是程式 bug ?
關鍵之前找的代碼也沒有從私鑰檔案恢復私鑰的代碼啊, 即使找到了包含寫和讀的完整代碼,但是不同代碼保存成的檔案內容有可能也不一樣,
也就是說想要恢復私鑰,就得用回原來那個代碼,如果忘了那個代碼,私鑰就恢復不了了?
乖乖,本來是為了方便,不想記 64 位私鑰才選擇記錄在檔案里面的,
現在,我不用記 64 位的十六進制的字符了,我只需要記 64 行的代碼就行,造孽啊,
又本著閑著也是閑著的原則,我決定好好研究一下這個到底是怎么回事,
讓自己的私鑰存得放心,取得安心~
pem 檔案的編碼格式
其實呢,
pem 檔案里面所存盤的二進制資料是用 base64 格式儲存的
可能這個時候,有些動手能力強的帥哥美女就把我上面的字串拿到瀏覽器上,
進行在線 base64 解碼了,想看看我的私鑰,然而,想看我私鑰沒那么簡單,
估計你看到的是這樣(https://base64.us/ 去試試):

誒 ~,誒 ~,別走,別罵人,你要相信我,這并不是錯了,聽我慢慢到來……
我上面說過:“pem 檔案里面所存盤的二進制資料是用 base64 格式儲存的”,
也就是說我們往 pem 檔案存的是二進制,然后 pem 檔案用 base64 編碼格式把它展示給我們看,
如果直接對"3/k2OLWwpTzaTYeHPbyYEEGFuVLEh86gm+fBt72DkiA="
這個字串進行 base64 解碼,得到一串二進制數,
那么它一定和我之前存進去的二進制串試一樣的(我保證,我發誓),
那么為什么上面用瀏覽器在線解碼會得到亂碼呢?
那是因為同一串二進制,可能會有許許多多的編碼方式,有 base58,base64 ,
十六進制,Ascill……等方式,而在上面的 base64 在線解碼網頁中,
所得到的二進制串是使用 Ascill 編碼的,可是我往 pem 檔案中所存盤的位元組,
是使用十六進制格式編碼的啊(沒想到吧【鬼魅一笑】),你用 Ascill 的方式編碼原本使用十六進制編碼的二進制,這樣……不合適吧……
如果想通過 3/k2OLWwpTzaTYeHPbyYEEGFuVLEh86gm+fBt72DkiA= 還原我原來使用十六進制編碼的字串,你需要這樣:
"3/k2OLWwpTzaTYeHPbyYEEGFuVLEh86gm+fBt72DkiA="->base64 解碼->二進制->十六進制編碼
我給你們嘗試一下(https://c.runoob.com/compile/21 golang在線執行):
package main
import (
"fmt"
"encoding/base64"
"encoding/hex"
)
func decode(data string) {
// base64 解碼->二進制
sDec, err := base64.StdEncoding.DecodeString(data)
if err != nil {
fmt.Println("Error decoding string: %s ", err.Error())
return
}
// 二進制->十六進制編碼
pri:=hex.EncodeToString(sDec)
fmt.Println(pri)//dff93638b5b0a53cda4d87873dbc98104185b952c487cea09be7c1b7bd839220
}
func main() {
decode("3/k2OLWwpTzaTYeHPbyYEEGFuVLEh86gm+fBt72DkiA=")
}
然后就會輸出 dff93638b5b0a53cda4d87873dbc98104185b952c487cea09be7c1b7bd839220
沒錯,這就是我保存的私鑰,恭喜恭喜,歷盡千辛萬苦終于的到私鑰了,
快去看看這個私鑰對應的地址有沒有位元幣……
完整代碼
保存私鑰成檔案,和把檔案恢復成私鑰的完整代碼可以看這里: https://github.com/ayher/myproject/tree/main/markdown/encryptionFil
密鑰檔案保存懂了
知道了 pem 檔案保存的內容是怎么回事,其他也沒有什么大事了,以后需要把私鑰保存到檔案
里面,只需要記住私鑰編碼格式,基本也就沒問題了,
這就是我對 pem 檔案保存資料的理解啦~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/280251.html
標籤:區塊鏈
