与这个问题类似,我在这里尝试创建一个google自定义scrypt实现的java实现。
我已经验证了我能够生成与c项目相同的“派生密钥”值(即密码+使用scrypt的java实现散列的salt),但没有成功地获得下一步(aes加密使用派生密钥作为密钥,从我的firebase项目导出的基本签名者密钥作为数据)以匹配已知密文。
因此,我有两个问题:
我搞不懂为什么派生密钥长度是64字节,因为aes接受的最大密钥长度是32字节…它只是使用的前32字节吗?我似乎无法使用以下方法得到相同的结果:
final byte[] keyVal = Base64.decodeBase64(derivedKey.getBytes(CHARSET)); Key key = new SecretKeySpec(keyVal, 0, 32, "AES");
我也不确定这个步骤使用什么aes参数。我正在尝试: Cipher.getInstance("AES/CTR/NoPadding");
我在firebase scrypt java上有一个当前代码的github存储库。
暂无答案!
目前还没有任何答案,快来回答吧!