因在做license註冊機制當中,有對根據本地rsa pem金鑰檔案判斷出rsa的公私金鑰長度的需求(即:根據pem內容判斷出rsa金鑰是1024位或者2048位,或者其他位數等),因此個人通過思考,摸索整理出乙個方法,予以記錄,備用,分享。
package main
import (
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"errors"
"fmt"
"io/ioutil"
"os"
)//全域性變數
var privatekey, publickey byte
func init()
privatekey, err = ioutil.readfile("private.pem")
if err != nil
}/**
* @brief 獲取rsa公鑰長度
* @param[in] pubkey rsa公鑰
* @return 成功返回 rsa公鑰長度,失敗返回error 錯誤資訊
*/func getpubkeylen(pubkey byte) (int, error)
block, _ := pem.decode(pubkey)
if block == nil
pubinte***ce, err := x509.parsepkixpublickey(block.bytes)
if err != nil
pub := pubinte***ce.(*rsa.publickey)
return pub.n.bitlen(), nil
}/**
* @brief 獲取rsa私鑰長度
* @param[in] prikey rsa私鑰
* @return 成功返回 rsa私鑰長度,失敗返回error 錯誤資訊
*/func getprikeylen(prikey byte) (int, error)
block, _ := pem.decode(prikey)
if block == nil
priv, err := x509.parsepkcs1privatekey(block.bytes)
if err != nil
return priv.n.bitlen(), nil
}func main()
附錄:以下程式是產生rsa公私金鑰的程式,附件,方便測試。
package main
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"flag"
"log"
"os"
)func main()
log.println("金鑰檔案生成成功!")
}func genrsakey(bits int) error
derstream := x509.marshalpkcs1privatekey(privatekey)
block := &pem.block
file, err := os.create("private.pem")
if err != nil
err = pem.encode(file, block)
if err != nil
// 生成公鑰檔案
publickey := &privatekey.publickey
derpkix, err := x509.marshalpkixpublickey(publickey)
if err != nil
block = &pem.block
file, err = os.create("public.pem")
if err != nil
err = pem.encode(file, block)
if err != nil
return nil
}
PEM格式的證書轉換格式
轉換格式方式也有很多種,最為簡單直接的辦法直接用linux自帶的openssl軟體直接轉換。常用格式轉換 certificates formats 方式。我們在準備轉換格式之前,需要找一台linux vps,且已經安裝openssl軟體的,如果沒有安裝,自行安裝。第一 pem 轉 pkcs7 ope...
linux上pem格式私鑰轉pfx格式證書的命令
1.root.csr 可改成其它名字,字尾名不改 openssl req new key 私鑰名稱.pem out root.csr 2.root.crt 可改成其它名字,字尾名不改 openssl x509 req days 3650 sha1 extensions v3 ca signkey 私...
PEM檔案格式詳細解析 收藏
pem檔案格式詳細解析 收藏 pem檔案格式存檔 author roson sun sunxiao tomonline inc.com time 2006 4 11 1 描述 openssl使用pem rfc 1421 1424 文件格式,如果使用其他語言包,則需要將此格式進行解碼並將各個私公鑰加入...