我想存储一个 keyset,并希望使用用户提供的“主密码”生成的密钥对文件进行加密。当然,稍后我想,给定相同的主密码,能够通过解密文件来加载该密钥集。
看来我需要一个Aead
,我可以从一个KeysetHandle
with生成它AeadFactory.getPrimitive(keysetHandle)
。但是我怎样才能KeysetHandle
从“主密码”中产生一个?
(对于这个问题的上下文,从密钥管理系统获取该密钥,而不是从主密码“凭空”产生它,不是一种选择。)
我想存储一个 keyset,并希望使用用户提供的“主密码”生成的密钥对文件进行加密。当然,稍后我想,给定相同的主密码,能够通过解密文件来加载该密钥集。
看来我需要一个Aead
,我可以从一个KeysetHandle
with生成它AeadFactory.getPrimitive(keysetHandle)
。但是我怎样才能KeysetHandle
从“主密码”中产生一个?
(对于这个问题的上下文,从密钥管理系统获取该密钥,而不是从主密码“凭空”产生它,不是一种选择。)
AnAead
可以按如下方式创建(这里从 Scala 完成):
val password: String = "..."
val aead = {
val messageDigest = MessageDigest.getInstance("SHA-256")
messageDigest.update(password.getBytes(CharsetNames.Utf8))
val key256Bit = messageDigest.digest()
val key128Bit = key256Bit.take(16)
new AesGcmJce(key128Bit)
}
几点评论: