我想混淆(*)一些密码,将它们隐藏在Java源代码中。
发现茉莉花时,我认为我事先加密了密码文本,然后在源代码中从记住的种子+加密密码中解密。但是,加密过程似乎不是可重复的:当生成加密的密码文本时
BasicTextEncryptor bte = new BasicTextEncryptor();
bte.setPassword("something"); // the "seed"
String ep = bte.encrypt("mypasswordtext") 每次运行ep时,我都会得到不同的加密密码:For example Zx5RdBLxIB1sPxG7Os3/G4aqqfy59l8n、v3-D3AZWJAybdqWac9FsjdLgMqkAS9vS或ghsD3wZwJAwjk9ghqwFLwqwgMqkwS9vS。
如何使加密可重复,以便我可以使用种子加加密字符串来生成真正的密码?
(*)我使用“模糊不清”,因为我知道这根本不是隐藏密码的安全方法,但至少它帮助人们不能通过对源代码进行锁定来识别密码,同时将所有密码保存在源代码文件中。
发布于 2017-08-17 06:12:03
每次执行加密并将其包含在输出中时,BasicTextEncryptor都会生成一个随机盐,如下所示:http://www.jasypt.org/api/jasypt/1.9.0/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.html#encrypt(java.lang.String)。即使密文不一样,解密仍然有效。
如果每次都想产生相同的结果,那么就必须直接设置和配置一个带有非随机盐生成器的StandardPBEStringEncryptor。
然而,正如你在帖子末尾提到的那样,做这两件事都不是很好的做法。如果您正在使用“真实世界”应用程序,则应该避免将这些秘密存储在源代码中。
https://stackoverflow.com/questions/45727434
复制相似问题