Java 加密密码在加密数据方面的可靠性如何?



我正在尝试学习Java密码加密,并且对下面的代码有几个问题:

public class Main2 {
public static void main(String[] args) {
Cipher cipher;
KeyGenerator keyGenerator;
SecureRandom secureRandom;
int keyBitSize = 128;
SecretKey secretKey;
byte[] plainText, plainText2;
byte[] cipherText, cipherText2;
try 
{
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
keyGenerator = KeyGenerator.getInstance("AES");
secureRandom = new SecureRandom();          
keyGenerator.init(keyBitSize, secureRandom);
secretKey = keyGenerator.generateKey();
try 
{
//pass secretKey to cipher.init()
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
try 
{
plainText = "helloWorld".getBytes("UTF-8");
plainText2 = "helloWorld".getBytes("UTF-8");
cipherText = cipher.doFinal(plainText);
cipherText2 = cipher.doFinal(plainText2);
System.out.println(cipherText + "n" + cipherText2);
}
catch (IllegalBlockSizeException e) 
{
e.printStackTrace();
} 
catch (BadPaddingException e) 
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e) 
{
e.printStackTrace();
}                
} 
catch (InvalidKeyException e) 
{
e.printStackTrace();
}
} 
catch (NoSuchAlgorithmException e) 
{       
e.printStackTrace();
} 
catch (NoSuchPaddingException e) 
{
e.printStackTrace();
}
}
}
  1. 为什么当keyBitSize设置为 256 时会出现无效密钥异常(无效密钥大小(? 密码限制为 128 位吗?

  2. 此加密方法是否始终生成一致的加密字符串长度 11(设置为keyBitSize = 128时(?

  3. 此方法是否会截断任何更大长度的纯文本输入字符串?

  4. 在将加密值存储在MySQL数据库中之前,使用此方法加密用户输入是否是一种可靠的安全形式?

为什么当 keyBitSize 设置为 256 时会出现无效密钥异常(无效密钥大小(?密码限制为 128 位吗?

假设您使用的是OracleJDK,则需要无限强度的JCE库(如注释所示(。是的,进入 jre/lib/security 文件夹

此加密方法是否始终生成一致的加密字符串长度 11(设置为 keyBitSize = 128 时(?
此方法是否会截断任何更大长度的纯文本输入字符串?

您打印的是字节数组引用,而不是任何加密值。加密的结果是一个字节数组,您应该将数组编码为可打印的字符(好的做法是 base64 或十六进制(

你可以看看我的博客,看看一些例子。

在将加密值存储在MySQL数据库中之前,使用此方法加密用户输入是否是一种可靠的安全形式?

一点也不。它与加密无关,而是您使用它的方式。

当涉及到用户身份验证凭据时,永远不要存储用户密码,即使是加密的。那么原则上用户密码是可逆的。有很多关于它的文章,例如 https://www.google.be/amp/s/nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/amp/

目前存储身份验证凭据的最佳实践是使用加盐慢速哈希 (pbkdf2,...

相关内容

  • 没有找到相关文章

最新更新