java - AES加密/解密可以免费用于商业应用程序(Java API)吗?如何安全地编码(不是散列)和存储纯密码?

标签 java encryption aes

我想使用 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/

相关文章:

java - 正则表达式阻止某些特殊字符

java - 从 byte[] 创建位图

java - Hibernate 使用 @LazyToOne(LazyToOneOption.NO_PROXY) 进行延迟加载

ios - 在越狱设备中可以看到数据库文件吗?

python - 如何使用RSA方案加密字符串?

使用 Crypto Swift 的 iOS 13 AES 解密不起作用

ios - AES256 大于 32Bytes

java - 是否有类似 Spark 的 Kafka Streams 累加器?

c# - 使用 AES 加密任何文件

c# - AES 加密 C# 解密 Java?