转换明文以执行 elgamal 加密
Convert plaintext to perform elgamal encryption
嗨,我正在 java 中编写一个程序来测试 elgamal 加密的变体,但是我的问题不是 encryption/decryption
链本身,而是如何对输入执行操作给出:一个文本文件。我有一个包含一些单词的文本文件(例如内容可以是:"Hello world, this is a test"
),我需要像这样对它们执行数字运算:
ciphertext= (message * y) mod p
其中 y
和 p
是两个 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)
。
嗨,我正在 java 中编写一个程序来测试 elgamal 加密的变体,但是我的问题不是 encryption/decryption
链本身,而是如何对输入执行操作给出:一个文本文件。我有一个包含一些单词的文本文件(例如内容可以是:"Hello world, this is a test"
),我需要像这样对它们执行数字运算:
ciphertext= (message * y) mod p
其中 y
和 p
是两个 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)
。