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

java和go之间的RSA加密解密

java和go之间的RSA加密解密

Go
温温酱 2021-10-11 10:34:55
在java中我通过RSA加密一个字符串:“你好,我是纯文本字符串!@sina.com”然后得到:kkkHf5QSXx8aDadk66AOysmV8LOi4vWUANal+7KV6va/5ZR7PSWGRS5bzbK4vMyK9FA5CLQolr2NB6ouPNWpgq3Af7Pn/f45+pDtKRsBLX8+q/Mw7TOYR525e7nVePDBLM2wLQZ4Gh5QMQzEI3Me3Zc3030jRg0gEG13N/1EzMo=但是我尝试了很多方法,都无法在go中解密。有什么问题?任何帮助将不胜感激,谢谢。这是我的代码:爪哇:public static void main(String[] args) throws Exception {  String pubKey_from_go="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZsfv1qscqYdy4vY+P4e3cAtmv"+            "ppXQcRvrF1cB4drkv0haU24Y7m5qYtT52Kr539RdbKKdLAM6s20lWy7+5C0Dgacd"+            "wYWd/7PeCELyEipZJL07Vro7Ate8Bfjya+wltGK9+XNUIHiumUKULW4KDx21+1NL"+            "AUeJ6PeW+DAkmJWF6QIDAQAB";String plainText = "Hello,I am  plaintext string!@sina.com"; String encryptString=encByGoPubKey(pubKey_from_go,plainText);}public static String encByGoPubKey(String pubkey_from_go,String plainText) throws Exception {    Cipher cipher = Cipher.getInstance("RSA");//Cipher.getInstance("RSA/ECB/PKCS1Padding");      byte[] plainTextBytes = plainText.getBytes();      PublicKey pubkey_go=getPublicKey(pubkey_from_go);    cipher.init(Cipher.ENCRYPT_MODE, pubkey_go);      byte[] enBytes = cipher.doFinal(plainTextBytes);      String encryptString = (new BASE64Encoder()).encode(enBytes);      return encryptString;   }public static PublicKey getPublicKey(String key) throws Exception {    byte[] keyBytes;    keyBytes = (new BASE64Decoder()).decodeBuffer(key);    X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);    KeyFactory keyFactory = KeyFactory.getInstance("RSA");    PublicKey publicKey = keyFactory.generatePublic(keySpec);    return publicKey;  }  
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

尝试使用 Java 中的 padding 进行加密。我对“go”一无所知,但是在 Java 中,您正在加密没有填充的消息。

Cipher cipher = Cipher.getInstance("RSA");

在此代码片段中,将“RSA”更改为“RSA/ECB/PKCS1Padding”,因为在“go”中,我看到您正在使用一些名为“DecryptPKCS1v15”的函数,PKCS1 v1.5 标准本身意味着要使用的 PKCS#1 填充。希望对你有帮助。


查看完整回答
反对 回复 2021-10-11
  • 1 回答
  • 0 关注
  • 421 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信