我正在尝试使用 RSA 编写一个加密程序,需要能够将明文转换为long
。显然,明文中必须包含不仅仅是数字的内容,所以使用Long.parseLong()
不是一个解决方案。我找到了这个,它解释了如何用这种方法将char
数组转换为long
,但我不确定如何将其转换回char
数组(或String
)。我从上述网站获得的代码如下:
public long charArrayToLong(char[] bi){
long len = bi.length;
long sum = 0;
long tmp, max = len - 1;
for (int i = 0; i < len; ++i) {
tmp = bi[i] - '0';
sum += tmp * Math.pow(2, max--);
return sum;
}
此代码用于将char
数组转换为长整型,而不依赖于数组中仅有的数值char
,但我还需要一种将其转换回来的方法。
具体来说,我要寻找的是:我需要根据其 ASCII 值将char
中的每个 转换为一个数字,根据其在 中的位置的幂乘以该数字,将这些数字相加以获得纯文本变量,然后反转操作以将其转换为另一种方式。String
String
long
我的预期输入是String
纯文本(例如“敏捷的棕色狐狸跳过了懒狗”)。我的预期输出是长整型,其中包含String
嵌入数字中的每个字符的值。
我之所以需要这样做,是因为我需要String
用公式来指数化一个数字,而不是c = m ^ e % n
。由于m
是明文消息,我需要将其转换为数字,这样我就可以将其取 的幂e
,即公钥。