首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择我的AES加密的强度,即128,256,512等?

如何选择我的AES加密的强度,即128,256,512等?
EN

Stack Overflow用户
提问于 2015-12-07 20:34:15
回答 2查看 343关注 0票数 1

下面是我如何在java中加密文本的示例,尽管加密是有效的。我似乎不知道如何修改加密级别,即128、256、512等。

代码:

代码语言:javascript
复制
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中做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2015-12-07 20:41:34

使用SecretKey。例如:

代码语言:javascript
复制
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

代码语言:javascript
复制
final SecretKeySpec keySpec = new SecretKeySpec(key.getEncoded(), "AES");
票数 2
EN

Stack Overflow用户

发布于 2015-12-07 21:19:54

没有AES-512。AES仅支持128、192和256位的密钥大小。在Java语言中,您可以通过传入一个大小合适的密钥来选择合适的密钥大小:长度为16、24或32的byte[]

如果您有一个密码,并且您想要从中扩展一个密钥,那么您需要使用基于密码的密钥派生函数,例如PBKDF2、bcrypt、scrypt或Argon2。确保根据您的需求调整迭代次数或成本因子:尽可能高,而不会给用户带来太多不便。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34133679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档