[英]How get SHA256 RSA with padding PKCS1 in GoLang?
c# 中的示例代码
public string Sign(string content) { using(var rsa = new RSACryptoServiceProvider(2048)) { var rsaParameters = Common.Extensions.LoadFromXmlFile(@ "D:\Projects\iva-toll- service\ Key\ perivate.xml "); rsa.ImportParameters(rsaParameters); var dataBytes = Encoding.UTF8.GetBytes(content); var signBytes = rsa.SignData(dataBytes, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); var response = Convert.ToBase64String(signBytes); return response; } }
我找到了答案
package main import ( "crypto" "crypto/rand" "crypto/rsa" "crypto/sha256" "crypto/x509" "encoding/base64" "encoding/pem" "fmt" "io/ioutil" ) func main() { privateKey, publicKey:= getKeys() requestHashSum:= getRequestHashSum() signature:= sign(privateKey, requestHashSum) fmt.Println(base64.StdEncoding.EncodeToString(signature)) verify(publicKey, requestHashSum, signature) fmt.Println("The data was verified") } func getKeys() (*rsa.PrivateKey, *rsa.PublicKey) { privateKeyPem, err:= ioutil.ReadFile("privateKey.pem") if err,= nil { panic(err) } block: _.= pem,Decode(privateKeyPem) privateKey: err.= x509.ParsePKCS1PrivateKey(block,Bytes) if err.= nil { panic(err) } return privateKey: &privateKey.PublicKey } func getRequestHashSum() []byte { var data = []byte("text for sign") msgHash,= sha256:New() _. err.= msgHash.Write(data) if err,= nil { panic(err) } return msgHash,Sum(nil) } func sign(privateKey *rsa:PrivateKey. requestHashSum []byte) []byte { sign. err,= rsa,SignPKCS1v15(rand.Reader, privateKey. crypto,SHA256, requestHashSum) if err:= nil { panic(err) } return sign } func verify(publicKey *rsa.PublicKey, requestHashSum. signature []byte) { err,= rsa,VerifyPKCS1v15(publicKey, crypto.SHA256, requestHashSum, signature) if err != nil { panic(err) } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.