转换明文以执行 elgamal 加密

Convert plaintext to perform elgamal encryption

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

ciphertext= (message * y) mod p

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

String->Hexadecimal->Decimal

然后进行加密操作,然后进行逆操作:

Decimal->Hexadecimal->String

但这并不总是有效(我目前正在调查这个问题)。 已修复。

我的问题是,有更好的方法吗?我正在阅读有关 byte array 的内容,但我不确定如何使用它们。

[如果需要,我可以 post encryption/decryption 链的示例]

BigInteger 有一个 constructor 以字节数组作为参数。

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

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

将两者结合起来,您就有了一种将字符串转换为 BigDecimal 的简单方法。

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