栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Go中存储ECDSA私钥

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Go中存储ECDSA私钥

这是一个代码示例,演示了Go中密钥的编码和解码。知道您需要连接几个步骤会有所帮助。加密算法是第一步,在这种情况下为ECDSA密钥。然后,您需要标准编码,x509是最常用的标准。最后,您需要一种文件格式,PEM也是常用的一种。这是当前最常用的组合,但是可以随意替换任何其他算法或编码。

func enpre(privateKey *ecdsa.PrivateKey, publicKey *ecdsa.PublicKey) (string, string) {    x509Enpred, _ := x509.MarshalECPrivateKey(privateKey)    pemEnpred := pem.EnpreToMemory(&pem.Block{Type: "PRIVATE KEY", Bytes: x509Enpred})    x509EnpredPub, _ := x509.MarshalPKIXPublicKey(publicKey)    pemEnpredPub := pem.EnpreToMemory(&pem.Block{Type: "PUBLIC KEY", Bytes: x509EnpredPub})    return string(pemEnpred), string(pemEnpredPub)}func depre(pemEnpred string, pemEnpredPub string) (*ecdsa.PrivateKey, *ecdsa.PublicKey) {    block, _ := pem.Depre([]byte(pemEnpred))    x509Enpred := block.Bytes    privateKey, _ := x509.ParseECPrivateKey(x509Enpred)    blockPub, _ := pem.Depre([]byte(pemEnpredPub))    x509EnpredPub := blockPub.Bytes    genericPublicKey, _ := x509.ParsePKIXPublicKey(x509EnpredPub)    publicKey := genericPublicKey.(*ecdsa.PublicKey)    return privateKey, publicKey}func test() {    privateKey, _ := ecdsa.GenerateKey(elliptic.P384(), rand.Reader)    publicKey := &privateKey.PublicKey    encPriv, encPub := enpre(privateKey, publicKey)    fmt.Println(encPriv)    fmt.Println(encPub)    priv2, pub2 := depre(encPriv, encPub)    if !reflect.DeepEqual(privateKey, priv2) {        fmt.Println("Private keys do not match.")    }    if !reflect.DeepEqual(publicKey, pub2) {        fmt.Println("Public keys do not match.")    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号