java - Java中的PKCS5_PBKDF2_HMAC_SHA1
问题描述
必须在 Java 中实现 openssl 函数 - PKCS5_PBKDF2_HMAC_SHA1(keyData, 8, salt, 8, iterCount, KEY_SIZE, key))。
下面是我的Java代码
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(customerId.toCharArray(), RefundUtil.getSalt(), iterationCount, bitLength);
SecretKey tmp = factory.generateSecret(spec);
byte[] pbkdf2Key = tmp.getEncoded();
上面的Java代码正确吗?
解决方案
这通常是我实现的方式PBKDF2_HMAC_SHA1
:
private static byte[] getSalt(int saltSize){
SecureRandom secureRandom = new SecureRandom();
byte[] salt = new byte[saltSize];
secureRandom.nextBytes(salt);
this.MC = salt;
return salt;
}
public static byte[] hashPassword(char[] password, int saltSize) throws NoSuchAlgorithmException, InvalidKeySpecException{
byte[] salt = getSalt(saltSize);
PBEKeySpec pbeKeySpec = new PBEKeySpec(password,salt,iterations,hashBites);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
return keyFactory.generateSecret(pbeKeySpec).getEncoded();
}
您的实施将正常工作
推荐阅读
- c++ - C++ SFML Sprite 移动未按预期工作
- java - 此请求的时间戳在 recvWindow 之外
- c++ - 为什么从 DLL 调用类方法需要虚拟说明符?
- voicexml - 获取用户语音的音频流记录,因为它流入
- azure - Azure:通过 REST API 获取单个资源的当前余额
- ios - 标题顶部的 CollectionView 单元子视图
- ajax - 如何使用 Vanilla JS 在基本的 Wordpress SPA 中实现路由
- acumatica - 显示 % 登录显示格式
- wordpress - tag_edit_form_fields 和 edit_tag_form_fields 动作在 wordpress 中工作
- javascript - 部署后更新功能区中的图标