我正在编写一个在DES中进行加密和解密的程序.加密过程中使用的密钥应该在解密时使用吗?我的问题是加密和解密是在不同的机器上运行的.这是密钥在加密过程中的生成方式.
SecretKey key = KeyGenerator.getInstance("DES").generateKey();
所以,我以为我会把密钥写入文件.但看起来我可以将一个SecretKey对象强制转换为String但反之亦然!那么,如何提取文本文件中包含的密钥呢?并作为此声明的输入传递?
decipher.init(Cipher.DECRYPT_MODE,key,paramSpec);
否则是否可以在加密和解密过程中将密钥作为用户的输入?
最佳答案
做这个:
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”).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。