golang 獲取pem格式RSA公私鑰長度

2021-08-18 05:00:14 字數 2095 閱讀 4235

因在做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 文件格式,如果使用其他語言包,則需要將此格式進行解碼並將各個私公鑰加入...