1

嗨,我正在用 java 编写一个程序来测试 elgamal 加密的变体,但是我的问题不是encryption/decryption链本身,而是如何对给定的输入执行操作:文本文件。我有一个包含一些单词的文本文件(例如内容可以是:)"Hello world, this is a test",我需要对它们执行数字运算,如下所示:

密文=(消息* y)mod p

哪里yp是两个biginteger。我尝试了这个转换链:(一次读取一个字符串):

字符串->十六进制->十进制

然后执行加密操作,然后反之:

十进制->十六进制->字符串

但这并不总是有效(我目前正在调查这个问题)。固定的。

我的问题是,有更好的方法来做到这一点吗?我正在阅读有关byte array's 的信息,但我不确定如何使用它们。

[如果需要,我可以发布加密/解密链的示例]

4

1 回答 1

0

BigInteger 有一个以字节数组为参数的构造函数。

使用(例如)UTF-8 编码,任何 String 都可以无损失地转换为字节数组:

byte[] bytes = string.getBytes(StandardCharsets.UTF_8); 

将两者结合起来,您就可以轻松地将 String 转换为 BigDecimal。

对于反向操作,使用BigInteger.toByteArray(),然后使用new String(bytes, StandardCharsets.UTF_8).

于 2015-06-05T12:45:52.880 回答