下面是我如何在java中加密文本的示例,尽管加密是有效的。我似乎不知道如何修改加密级别,即128、256、512等。
代码:
byte keySelectedByUser[] = selectedKey.getBytes();
SecretKeySpec secretKey = new SecretKeySpec(keySelectedByUser, "AES");
Cipher cipher;
cipher = Cipher.getInstance("AES/CBC/PKCS7PADDING");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encrypted = cipher.doFinal(stringToEncrypt.getBytes());我如何在java中做到这一点?
发布于 2015-12-07 20:41:34
使用SecretKey。例如:
final int KEY_LENGTH = 256;
final SecretKeyFactory factory = SecretKeyFactory.getInstance("YourPreferredAlgorithm");
final SecretKey key = factory.generateSecret(new PBEKeySpec(pass, salt, iterations, KEY_LENGTH));然后使用SecretKey获取您的SecretKeySpec
final SecretKeySpec keySpec = new SecretKeySpec(key.getEncoded(), "AES");发布于 2015-12-07 21:19:54
没有AES-512。AES仅支持128、192和256位的密钥大小。在Java语言中,您可以通过传入一个大小合适的密钥来选择合适的密钥大小:长度为16、24或32的byte[]。
如果您有一个密码,并且您想要从中扩展一个密钥,那么您需要使用基于密码的密钥派生函数,例如PBKDF2、bcrypt、scrypt或Argon2。确保根据您的需求调整迭代次数或成本因子:尽可能高,而不会给用户带来太多不便。
https://stackoverflow.com/questions/34133679
复制相似问题