Go 使用三重DES加密创建RSA私钥

Go 使用三重DES加密创建RSA私钥,go,encryption,openssl,cryptography,Go,Encryption,Openssl,Cryptography,Go中以下命令的等效项是什么 openssl genrsa-des3-passout pass:mypassword-out myfile.key 2048 到目前为止我所拥有的 package main import ( "crypto/des" "crypto/rand" "crypto/rsa" "encoding/pem" ) func main() { key, _

Go中以下命令的等效项是什么

openssl genrsa-des3-passout pass:mypassword-out myfile.key 2048
到目前为止我所拥有的

package main

import (
    "crypto/des"
    "crypto/rand"
    "crypto/rsa"
    "encoding/pem"
)

func main() {
  key, _ := rsa.GenerateKey(rand.Reader, 2048)

  // Do something with des.NewTripleDESCipher(...)?

  keyPem := pem.EncodeToMemory(&pem.Block{
    Type:  "RSA PRIVATE KEY",
    Bytes: ?,
  })

  // ...
}

您缺少的主要功能是可用于使用其中一个加密的函数,包括3DE

下面是生成密钥、用3DES加密并将其写入文件的示例代码:

主程序包
进口(
“加密/兰德”
“加密/rsa”
“加密/x509”
“编码/pem”
“io/ioutil”
)
func main(){
//生成2048位RSA密钥。
key,err:=rsa.GenerateKey(rand.Reader,2048)
如果错误!=零{
恐慌(错误)
}
//将其封送为DER编码的ASN.1格式。
原始:=x509.MarshallPKCS1PrivateKey(键)
//使用3DES和密码“mypassword”进行加密。
block,err:=x509.EncryptPEMBlock(rand.Reader,“RSA私钥”,原始,[]字节(“mypassword”),x509.PEMCipher3DES)
如果错误!=零{
恐慌(错误)
}
//将块编码为PEM。
编码:=pem.EncodeToMemory(块)
//把它写下来。
err=ioutil.WriteFile(“myfile.key”,编码,0400)
如果错误!=零{
恐慌(错误)
}
}
生成的文件是:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,627721fef197aa1f

Y5BPGXBnrTXgSPfWGl04f9FNJAB8tlzOF3MBUJaZBBb+3sOWWfz43RikFuXowl3s
DWOjNv9TnHO1M5Tlxye84iywo8CqINCZzMfan3J8ZxKWHpXbs5DVXQ9INTPfLueq
...
QuUylrQNEWt0T1BlKRltAkoRawiBj7Ys/WMnto9dfEbJPeoHfGCp0xTSYSvIwE01
rYrebCfNdrb8gW4KlQnOCj0bHU6xDtLzMtt6i9JD4CtXGKBo8mYwng==
-----END RSA PRIVATE KEY-----

忠告之词:3DES被认为是一种弱密码。您应该改用AES(有多种密钥大小)。

就像API是为它而设计的:PExcellent,工作起来很有魅力!谢谢你的建议!谈到密码学,我是个新手。到目前为止,我的主要信息来源是这篇文章()。我感到惊讶的是,考虑到这篇文章这么多年来得到了多少意见,没有人对密码发表评论(除非我忽略了它)。