我想使用 AES(Java API)加密/解密密码以将其存储在数据库中,如下所示:
try {
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
byte[] salt = new byte[10];
secureRandom.nextBytes(salt);
byte[] encryptedPassword = //some method to mix salt with plain password
Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec skeySpec = new SecretKeySpec(secretKey.getEncoded(), "AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
return cipher.doFinal(encryptedPassword);
} catch (NoSuchAlgorithmException |
UnsupportedEncodingException |
NoSuchPaddingException |
InvalidKeyException |
IllegalBlockSizeException |
BadPaddingException ex) {
//Logger...
}
我的问题是 - 我可以在商业应用中免费使用 AES 吗?如何改进上面的代码?
最佳答案
1997 年 NIST put out a request了解用于 AES 的潜在算法。在此请求中,要求之一是算法免版税。
所以算法本身是完全免费的。然而,这并不意味着该算法的实现是免费的。
Oracle 的实现是根据 Oracle 二进制代码许可证 (BCL) 获得许可的,根据 the Java SE general FAQ免费提供。
所以,是的,您可以免费在商业应用程序中使用它。
关于java - AES加密/解密可以免费用于商业应用程序(Java API)吗?如何安全地编码(不是散列)和存储纯密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18390409/