Java解密代码的最后几行没有意义。这些行是:
byte[] base64String = base64.depre(enpredString);byte[] plainBytes = new String(base64String).getBytes("UTF-8");byte[] cipherData = cipher.doFinal(plainBytes);System.out.println(cipherData);return cipherData.toString();
您必须反转在.NET中用于加密的步骤的顺序。首先,您应该对base64编码的字符串进行解码以获得密码字节。您这样做了,但是将结果标签为
base64String。您可能应该将此结果称为
cipherData。其次,您需要解密cipherData以获得纯文本。第三,您应该使用带有两个参数的Charset的两个参数的String构造函数从plainbytes创建一个字符串。这是代码的样子或接近它的样子。
byte[] cipherData = base64.depre(enpredString);byte[] plainBytes = cipher.doFinal(cipherData);return new String(plainBytes, "UTF-8");
最终,在Java中,每个对象都有一个toString()方法,但它并不总是能做您想要的。对于数组,toString()方法仅返回该数组的对象ID的表示形式,相当于JVM的内存地址。
编辑:
我想念您在解密代码中还使用了错误的密钥。您正在使用RSA公钥,但必须改为使用RSA私钥。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)