为了账号安全,请及时绑定邮箱和手机立即绑定

RSA OAEP , Golang 解密 , Java 加密

RSA OAEP , Golang 解密 , Java 加密

Go
暮色呼如 2022-01-17 18:08:49
Android客户端加密消息,java代码Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING");byte[] publicBytes = Base64.decode(Configs.PUBLIC_KEY.getBytes("UTF-8"),Base64.DEFAULT);X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicBytes);KeyFactory keyFactory = KeyFactory.getInstance("RSA");PublicKey pubKey = keyFactory.generatePublic(keySpec);cipher.init(Cipher.ENCRYPT_MODE, pubKey);String plaintext = "test";byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes("UTF-8"));String chipertext = Base64.encodeToString(encryptedBytes,Base64.DEFAULT);Log.d(TAG,"encrypted (chipertext) = " + chipertext);Golang服务器解密消息,golang代码func RsaDecrypt(encryptedString string) (string, error) {     base64DecodeBytes, err := base64.StdEncoding.DecodeString(encryptedString)     if err != nil {         return "", err     }     privateKeyBlock, _ := pem.Decode([]byte(privateKey))     var pri *rsa.PrivateKey     pri, parseErr := x509.ParsePKCS1PrivateKey(privateKeyBlock.Bytes)     if parseErr != nil {         return "", parseErr     }     decryptedData, decryptErr := rsa.DecryptOAEP(sha1.New(), rand.Reader, pri, base64DecodeBytes, nil)     if decryptErr != nil {         return "", decryptErr     }     return string(decryptedData), nil}和 golang 中的错误: crypto/rsa: decryption error我无法更改服务器上的代码,那么如何更改 Java 中的代码?
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

两个程序中的哈希函数不一样。在 Java 版本SHA-256中使用,但在 Go 版本SHA-1中使用。

你可以尝试RSA/ECB/OAEPWithSHA-1AndMGF1Padding在Java端使用。


查看完整回答
反对 回复 2022-01-17
  • 1 回答
  • 0 关注
  • 525 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号