在Go 中編組PKCS8 私鑰
在Go 中,出現了1.5 版本中是否有一種方便的方法來編組PKCS鑰的問題。與 x509.MarshalPKCS1PrivateKey 函數類似,開發人員尋求將私鑰轉換為序列化資料的有效機制。
雖然Go 沒有為此特定目的提供內建函數,但存在一個自訂解決方案可以解決此問題要求:
type pkcs8Key struct { Version int PrivateKeyAlgorithm []asn1.ObjectIdentifier PrivateKey []byte } func rsa2pkcs8(key *rsa.PrivateKey) ([]byte, error) { var pkey pkcs8Key pkey.Version = 0 // Default version for PKCS8 pkey.PrivateKeyAlgorithm = make([]asn1.ObjectIdentifier, 1) pkey.PrivateKeyAlgorithm[0] = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 1} // RSA encryption algorithm OID pkey.PrivateKey = x509.MarshalPKCS1PrivateKey(key) return asn1.Marshal(pkey) }
這個自訂函數rsa2pkcs8 允許您將rsa.PrivateKey物件轉換為PKCS8 編碼的位元組數組。它將版本設為 0,指定 RSA 加密演算法 OID,並將編組的 PKCS1 私鑰嵌入到 pkcs8Key 結構的 PrivateKey 欄位中。透過在此結構上呼叫 asn1.Marshal,您可以獲得代表 PKCS8 私鑰的序列化資料。
利用此解決方案使 Go 開發人員能夠編組 PKCS8 私鑰,為他們提供各種密碼學的便利實用程式操作和資料交換場景。
以上是如何在 Go 編組 PKCS8 私鑰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!