6

我正在编写一个在 DES 中同时进行加密和解密的程序。解密时应该使用加密过程中使用的相同密钥,对吗?我的问题是加密和解密在不同的机器上运行。这就是在加密过程中生成密钥的方式。

SecretKey key = KeyGenerator.getInstance("DES").generateKey();

所以,我想我会把密钥写到文件中。但看起来我可以将 SecretKey 对象类型转换为 String 但反之亦然!那么,如何提取文本文件中包含的密钥呢?并作为输入传递给该语句?

 decipher.init(Cipher.DECRYPT_MODE, key, paramSpec);

或者是否可以在加密和解密过程中将密钥作为用户的输入?

4

1 回答 1

13

做这个:

SecretKey key = KeyGenerator.getInstance("DES").generateKey();
byte[] encoded = key.getEncoded();
// save this somewhere

然后后来:

byte[] encoded = // load it again
SecretKey key = new SecretKeySpec(encoded, "DES");

但请记住,如今 DES 是不安全的(它相对容易被暴力破解)。强烈考虑改用 AES(只需将“DES”替换为“AES”)。

于 2011-06-19T19:26:15.320 回答