首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义密钥以生成密钥

定义密钥以生成密钥
EN

Stack Overflow用户
提问于 2013-04-24 00:26:08
回答 1查看 142关注 0票数 1

我正在做一个关于Java安全性的项目。服务器接收到一个口令,并将该口令插入到MAC中以验证一个特定文件的一致性。

代码语言:javascript
复制
Mac m;
SecretKey sk;
sk = KeyGenerator.getInstance( "AES" ).keygenerator();/* what i don't want to use */
byte[]mac=null;
Mac m = Mac.getInstance("HmacSHA1");
m.init( password ); /* it's wrong */
m.update("work of security".getBytes());
mac = m.doFinal();

我所能理解的是如何定义一个SecretKey到MAC初始化...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-24 00:51:20

用于从密码派生AES密钥的两种典型方法是:

使用密码的原始字节的

  1. 。此选项不是很强(取决于微不足道的dictionary attacks),并且依赖于密码恰好是128/192/256位。
  2. 使用函数(如PBKDF2)派生密钥。

您需要找出密钥是如何派生的。代码中的两个选项是:

原始字节数

代码语言:javascript
复制
SecretKey aesKey = new SecretKeySpec(password.getBytes(someCharset), "AES");

派生函数

示例PBKDF2:

代码语言:javascript
复制
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
SecretKey aesKey = factory.generateSecret(new PBEKeySpec(password, salt,
      iterations, 256));

salt值是一个随机字节数组(即可能是8个字节)。可以增加iterations来提高安全性,但要以牺牲性能为代价。

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

https://stackoverflow.com/questions/16174497

复制
相关文章

相似问题

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