您好我在java中编写程序来测试elgamal加密的变体,但我的问题不是encryption/decryption
链本身,而是如何对给定的输入执行操作:文本文件。我有一个文本文件,其中包含一些单词(例如内容可以是:"Hello world, this is a test"
),我需要对它们执行数字操作,如下所示:
ciphertext =(message * y)mod p
其中y
和p
是两个biginteger
。我尝试了这个转换链:(在时间读取一个字符串):
与字符串> Hexadecimal->十进制
然后执行加密操作,然后执行反向:
&的10进制GT; Hexadecimal->字符串
但这并不是一直有效(我目前正在调查这个问题)。已修复。
我的问题是,有更好的方法吗?我正在阅读有关byte array
的内容,但我不确定如何使用它们。
[如果需要,我可以发布加密/解密链的示例]
答案 0 :(得分:0)
BigInteger有constructor以字节数组作为参数。
任何String都可以使用(例如)UTF-8编码转换为字节数组而不会丢失:
byte[] bytes = string.getBytes(StandardCharsets.UTF_8);
将两者结合起来,您可以轻松地将String转换为BigDecimal。
对于反向操作,请使用BigInteger.toByteArray(),然后使用new String(bytes, StandardCharsets.UTF_8)
。