php导出的rsa证书在go中用不了, 求教[搞定了....]

ghostwwl · · 1384 次点击
polaris
社区,需要你我一同完善!
:+1:
#2
更多评论
自己搞定了 哈哈 原来 签名后 返回的 []bytes 应该直接 base64返回签名就可以验证通过 happy 背景介绍 这边 我用PHP历时5个月 开发了一个 xxx钱包服务端 机后台 每个应用或者网站 在 oauth2 协议的基础上 双向rsa签名传输数据 可以实现 [支付宝,微信,百付宝,快钱...]这个采用mixin插件形式的通道 然后提供充值 以及充值原路退款 以及快钱企业付款到个人银行账号 自动对账... 用户余额等... 使用rabbitmq 实现异步任务 现在是要搞一个golang的 sdk 呵呵 go没搞过 边写边差 还好n年前有点c基础 然后写过n年python func (this *FinanceApi) makeSign(will_sign_str string) string { MY_PRIKEY, _ := ioutil.ReadFile("/data0/xxkey/private_key.pem") keyobj, _ := pem.Decode(MY_PRIKEY) if keyobj == nil { panic("载入RSA私钥错误") } private, err := x509.ParsePKCS8PrivateKey(keyobj.Bytes) if err != nil { panic("处理证书失败") } h := crypto.Hash.New(crypto.SHA1) h.Write([]byte(will_sign_str)) hashed := h.Sum(nil) // 进行rsa加密签名 signedData, err := rsa.SignPKCS1v15(rand.Reader, private.(*rsa.PrivateKey), crypto.SHA1, hashed) if err != nil { fmt.Println("Error from signing: %s\n", err) return "" } // s2 := hex.EncodeToString(signedData) // fmt.Printf("%v\n", s2) // fmt.Printf("%v\n", signedData) // signRet := fmt.Sprintf("%x", signedData) return base64.StdEncoding.EncodeToString(signedData) }
#1