【发布时间】:2015-10-29 14:00:33
【问题描述】:
我正在实施我工作的加密机制,安全人员的要求如下:
- 使用 PBKDF2WithHmacSHA512、秘密密码、256 位盐和最少 20000 次迭代创建一个 256 位密钥。
- 盐应该使用 SecureRandom.getInstance("SHA1PRNG"); 生成
- 使用 AES256 和派生密钥进行加密。
我正在尝试使用 Jasypt 的 StandardPBEStringEncryptor 类
encryptor.setPassword(PASSWORD);
encryptor.setAlgorithm("AES/CBC/PKCS5Padding");
encryptor.setKeyObtentionIterations(20000);
encryptor.setSaltGenerator(new RandomSaltGenerator());
encryptor.encrypt("something");
当我这样做时,我得到以下异常:
java.security.NoSuchAlgorithmException:AES/CBC/PKCS5Padding SecretKeyFactory 不可用
我是否错误地使用了 Jasypt?我在这里错过了什么?
谢谢
【问题讨论】:
-
如果安全人员建议以任何形式或形式进行密码加密,他应该被替换。整个想法根本不安全。密码必须经过哈希处理,而不是加密。
-
它不是用于用户密码,只是用于一些配置属性,例如数据库用户名、数据库密码等。它是仅在我们的 Intranet 内传递的数据,并且为了额外的安全性而不是作为第一道防线进行了加密。
标签: java aes encryption-symmetric pbkdf2 jasypt