转换明文以执行elgamal加密

时间:2015-06-04 15:06:09

标签: java encryption elgamal

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

  

ciphertext =(message * y)mod p

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

  

与字符串> Hexadecimal->十进制

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

  

&的10进制GT; Hexadecimal->字符串

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

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

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

1 个答案:

答案 0 :(得分:0)

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

任何String都可以使用(例如)UTF-8编码转换为字节数组而不会丢失:

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

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

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