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

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

所以,我以为我会将 key 写到文件中。但是看起来我可以将SecretKey对象转换为String,反之亦然!那么,如何提取文本文件中包含的 key ?并作为此语句的输入?
 decipher.init(Cipher.DECRYPT_MODE, key, paramSpec);

还是在加密和解密过程中都可以将 key 作为用户的输入?

最佳答案

做这个:

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”即可)。

关于java - 以后如何使用KeyGenerator生成的 key ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6403662/

10-13 04:57