$pkeyid = openssl_pkey_get_private ( $priv_key );
openssl_sign ( $params_str, $signMsg, $pkeyid, OPENSSL_ALGO_SHA1 );
openssl_free_key ( $pkeyid );
$signMsg = base64_encode ( $signMsg );
请问用GO如何实现PHP这样的签名我写的代码如下,始终不成功
func getSing(splice string, priKey []byte) (encrypt string) {
PEMBlock, _ := pem.Decode(priKey)
if PEMBlock == nil {
log.Fatal("PEM解析错误")
}
privkey, err := x509.ParsePKCS8PrivateKey(PEMBlock.Bytes)
if err != nil {
log.Fatal(err)
}
pri, ok := privkey.(*rsa.PrivateKey)
if ok {
// SH256 := crypto.SHA256
// hashed := sha256.Sum256([]byte(fmt.Sprintf("%x", sha256.Sum256([]byte(splice)))))
// hashed := sha256.Sum256([]byte(nil))
// sign, err := rsa.SignPKCS1v15(rand.Reader, pri, SH256, hashed[:])
SH1 := crypto.SHA1
// hashed := sha1.Sum([]byte(fmt.Sprintf("%x", sha1.Sum([]byte(splice)))))
hashed := sha1.Sum([]byte(nil))
sign, err := rsa.SignPKCS1v15(rand.Reader, pri, SH1, hashed[:])
if err != nil {
log.Fatal(err)
}
return Base64Encode(sign)
} else {
log.Fatal(ok)
}
return
}
求大家帮忙解决,我肯定哪里错了,导致签名不对,验证签名也不对
添加回答
举报
0/150
提交
取消