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

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

$config = array( "digest_alg" => "sha512", "private_key_bits" => 512, "private_key_type" => OPENSSL_KEYTYPE_RSA, ); // 默认的 private_key_bits 为 1024 $r = openssl_pkey_new($config); openssl_pkey_export($r, $privKey); file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR . 'private_key.pem', $privKey); $this->_privKey = openssl_pkey_get_private($privKey); $rp = openssl_pkey_get_details($r); $pubKey = $rp['key']; file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR . 'public_key.pem', $pubKey); //$this->_pubKey = openssl_get_publickey($pubKey); $this->_pubKey = openssl_pkey_get_public($pubKey); php大概用上面的代码导出 一堆.pem的证书 然后在go中 block, _ := pem.Decode([]byte(这里就是导出的公匙的内容)) pub, err := x509.ParsePKIXPublicKey(block.Bytes) if err != nil { fmt.Printf("Failed to parse RSA public key: %s\n", err) return false, err } rsaPub, _ := pub.(*rsa.PublicKey) h := crypto.Hash.New(crypto.SHA1) h.Write([]byte(src)) digest := h.Sum(nil) data, _ := base64.StdEncoding.DecodeString(string(sign)) hexSig := hex.EncodeToString(data) fmt.Printf("base decoder: %v, %v\n", string(sign), hexSig) err = rsa.VerifyPKCS1v15(rsaPub, crypto.SHA1, digest, data) if err != nil { fmt.Println("Verify sig error, reason: ", err) return false, err } return true, nil 然后这个签名的 始终无法在php代码里验证签名

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

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

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