永发信息网

为什么解密后和明文不一样?

答案:2  悬赏:0  手机版
解决时间 2021-03-08 00:55
public class RSATest {

public static void main(String[] args)
{
try {
RSATest encrypt = new RSATest();
System.out.println("请输入你的明文:");
Scanner inputKey = new Scanner(System.in);
String encryptText = inputKey.next();
//String encryptText = "e";
KeyPair keyPair = encrypt.generateKey();
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
//System.out.println("私钥:"+privateKey);
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
//System.out.println("公钥:"+publicKey);
byte[] e = encrypt.encrypt(publicKey, encryptText.getBytes()); ,
byte[] de = encrypt.decrypt(privateKey, e);
System.out.println("加密后密文:"+toHexString(e));
System.out.println("解密后:"+toHexString(de));
} catch (Exception e) {
e.printStackTrace();
}
}
public KeyPair generateKey() throws NoSuchAlgorithmException {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(1024, new SecureRandom());
KeyPair keyPair = keyPairGen.generateKeyPair();
return keyPair; }
protected byte[] encrypt(RSAPublicKey publicKey, byte[] data) {
if (publicKey != null) {

try { Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(data);
} catch (Exception e)
{
e.printStackTrace();
}
}
return null;

}

protected byte[] decrypt(RSAPrivateKey privateKey, byte[] raw) {
if (privateKey != null) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return cipher.doFinal(raw);

} catch (Exception e) {
e.printStackTrace(); }
}

return null;
}
public static String toHexString(byte[] b)
{
StringBuilder sb = new StringBuilder(b.length * 2);
for (int i = 0; i < b.length; i++)
{ sb.append(HEXCHAr[(b[i] & 0xf0) >>> 4]);

sb.append(HEXCHAR[b[i] & 0x0f]); }
return sb.toString(); }
private static char[]
HEXCHAR = { '0', '1', '2', '3', '4', '5', '6', '7','8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

}
最佳答案
第一确定加密后的文件长度和加密前长度一致
因为如果一个字符‘a'加密后成了’\0‘的话,你这是用了strcat这样的函数就会默认把这个'\0'去掉的,
所以不要用strcat之类的函数,
要用指针。看看是不是这个问题。
全部回答
你说呢...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
竞业禁止约定每月赔偿200元,太少怎么办
给的是税后工资
怎么让天蝎后悔做的决定
衍昊纳金属制品厂地址有知道的么?有点事想过
【炸雷】一什么炸雷量词
小米4c 可以刷成原生安卓系统吗
用后皮肤白了,但是停用后脸上长很多痘痘,医
有没有人知道指甲长双层是什么原因
求一个带涛字的qq网名,好听一点
西州门业在什么地方啊,我要过去处理事情
苹果电脑pro输入法怎么切换输入法
梦见背人
【oldland】...要求说主语动词还有...例如lam
长兴县生猪定点屠宰执法大队地址在什么地方,
韩国济州岛免税店能退税吗?
推荐资讯
永泽肛肠门诊部(彭泽县民政局北)地址在哪,我
2019年金3练六年级数学上册江苏版答案
求一部90年代国外译制片,讲述一个人雪地逃亡
女友知道我抽烟喝酒就很生气,这是为什么啊,
随着新世纪的到来.人们越来越重视科学技术.所
【张湘祥】...功和机械能中关于举重的问题张
冬小麦是我市重要的粮食作物之一,栽培历史悠
跨市跨行转账手续费是多少
佛教是骗人的吗?
城际铁路天河机场至孝感隔多长时间班
x,y是自然数,x=4y,x和y的最大公因数是(),最小
达州市朝阳医药连锁有限责任公司和谐连锁店地
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?