我正在尝试模拟RSA加密和解密我希望加密方法
我现在拥有的东西,它的工作原理是接收和返回byte [](不是字符串)
public byte[] encrypt (byte[] message){
byte [] t= ((new BigInteger(message)).modPow(e, N)).toByteArray();
return (t);
}
我希望它的解密方法
返回原始字符串 我到现在为止所做的事情
public byte [] decrypt (byte [] message) {
byte[] data= ((new BigInteger(message)).modPow(d, N)).toByteArray();
return data;
}
这两种方法有效,但是我需要在我的主类中创建一个byte []并使用byte [] Str.getbyte()来加密和新的String(byte [])来加密......
我希望我的主要只处理字符串。当我使用这样的decrypt(String message)代码时
public String decrypt (String message) {
byte[] data= ((new BigInteger(message.getBytes())).modPow(d, N)).toByteArray();
return data.toString();
}
它没有像解密(byte []消息那样)给我原始文本,但它返回类似B@79f0a8b
我确定我错过了将文本转换为byte []的相关内容,反之亦然,但我不确定我错过了什么。
我很乐意听取您的意见。
(对不起我的英文)
答案 0 :(得分:1)
加密结果的字符串值的原因是什么?您可以轻松地将byte []转换为String并在尝试搜索时将其反转:byte[] to String java。 但是真的有理由去做吗?
也许你想要这样的东西:
public byte[] encrypt (String message);
public String decrypt (byte[] message);
然后你将使用字符串输入进行操作,并且能够获得字符串解密结果。但是没有理由用字符串中的加密数据进行操作,它看起来像冗余操作:你的字符串将是不可读的,算法与byte []一起工作。只需转换加密输入和解密输出。