PHP签名的字符串无法用go验证成功?

ltp5343 · · 1473 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

PHP签名代码: ```php // sign begin. $private_key_resource = openssl_get_privatekey($rsa_private_key_string); $private_key_details = openssl_pkey_get_details($private_key_resource); if (!isset($private_key_details['key']) || $private_key_details['type'] !== OPENSSL_KEYTYPE_RSA) { throw new InvalidArgumentException('This key is not compatible with RSA signatures'); } $signature = ''; openssl_sign($string_to_sign, $signature, $private_key_resource, OPENSSL_ALGO_SHA256); // free the key from memory openssl_free_key($private_key_resource); $base64url_encode_signature = $this->base64url_encode($signature); $request_header['App-Signature'] = $base64url_encode_signature.'.'.$string_to_sign; private function base64url_encode($data) { return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); } ``` go验证代码: ```go publicKey := LoadRSAPublicKeyFromDisk() digest := sha256.New() //digest.Write(bodyByte) digest.Write([]byte("")) hashed := digest.Sum(nil) tt1 := strings.Replace(elementArray[0], "-", "+", -1) tt2 := strings.Replace(tt1, "_", "/", -1) repeatChar := strings.Repeat("=", 4 - len(tt2) % 4) tt2 += repeatChar ttt,_ := base64.StdEncoding.DecodeString(tt2) //ttt,_ := base64.StdEncoding.DecodeString(elementArray[0]) logger.AccessLog("ttt1=%X, elementArray[0]=%v, tt2=%v", ttt, elementArray[0]) err4 := rsa.VerifyPKCS1v15(publicKey, crypto.SHA256, hashed, ttt) ``` PHP签名的字符串无法用go验证成功? 大家有没有人遇到过这种问题?

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1473 次点击  
加入收藏 微博
2 回复  |  直到 2017-02-25 11:04:48
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传