golang VerifyPKCS1v15 crypto/rsa: input must be hashed message (算法:MD5WithRSA、秘钥格式:PKCS8)

1 篇文章 0 订阅
1 篇文章 0 订阅

提示:

golang VerifyPKCS1v15 crypto/rsa: input must be hashed message

问题描述:

rsa.VerifyPKCS1v15解码出现:crypto/rsa: input must be hashed message

错误演示


错因:

类型不一致


解决方案:

类型一致即可

附录

记录完整RASWITHMD5(加密、解密)

const (
	//商户私钥
	RsaPrivateKey  	= `xxx`

	//商户公钥
	RsaPublickey	= `xxx`

	//第三方--公钥
	RsaLlkPublickey	= `xxx`
)

func Rsasign(origData string) (sign []byte,err error) {

	
	//加密
	hashMd5 := md5.Sum([]byte(origData))
	hashed := hashMd5[:]
	privateKeyString,err := base64.StdEncoding.DecodeString(RsaPrivateKey)
	if err != nil {
		return
	}
	privateKey, err := x509.ParsePKCS8PrivateKey(privateKeyString)
	if err != nil {
		return
	}
	signature, err := rsa.SignPKCS1v15(rand.Reader, privateKey.(*rsa.PrivateKey), crypto.MD5, hashed)
	return []byte(base64.StdEncoding.EncodeToString(signature)),err

}

/********************************************************************************/

/**RSA验签
 * $data待签名数据(需要先排序,然后拼接)
 * $sign需要验签的签名,需要base64_decode解码
 * 验签用支付公钥
 * return 验签是否通过 bool值
 */
func RsaVerify(originalData, signData string) bool{
	sign, err := base64.StdEncoding.DecodeString(signData)
	if err != nil {
		return false
	}
	publicKey, _ := base64.StdEncoding.DecodeString(RsaPublickey)//RsaLlkPublickey  RsaPublickey
	pub, err := x509.ParsePKIXPublicKey(publicKey)
	if err != nil {
		return false
	}
	hash := md5.New()
	hash.Write([]byte(originalData))
	err = rsa.VerifyPKCS1v15(pub.(*rsa.PublicKey), crypto.MD5, hash.Sum(nil), sign)
	if err!=nil{
		return false
	}
	return true
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值