我正在做一个关于Java安全性的项目。服务器接收到一个口令,并将该口令插入到MAC中以验证一个特定文件的一致性。
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初始化...
发布于 2013-04-24 00:51:20
用于从密码派生AES密钥的两种典型方法是:
使用密码的原始字节的
您需要找出密钥是如何派生的。代码中的两个选项是:
原始字节数
SecretKey aesKey = new SecretKeySpec(password.getBytes(someCharset), "AES");派生函数
示例PBKDF2:
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
SecretKey aesKey = factory.generateSecret(new PBEKeySpec(password, salt,
iterations, 256));salt值是一个随机字节数组(即可能是8个字节)。可以增加iterations来提高安全性,但要以牺牲性能为代价。
https://stackoverflow.com/questions/16174497
复制相似问题