2014-01-27 94 views
1

当我从密码中派生加密密钥时,通常使用散列算法从密码派生密钥。例如SHA-256(单轮或多轮)和SCrypt。从密码中导出加密/解密密钥时,哪种编码最常用?

但是,在散列函数中输入密码时,通常是使用UTF-8还是UTF-16编码?

我知道不可能与所有其他现有的加密机制“兼容”,但我想知道实际上最常用的方式。

+2

如有疑问,请使用UTF-8。 :) – ntoskrnl

+0

是的,我注意到了。愚蠢的问题,应该删除它:p –

+1

UTF-8是PBKDF2的非官方默认,但它只是规范中的一个提示。微软将默认为它,Java将使用Unicode代码点的低8位(主要是因为你可以使用可擦除的'char []'作为输入)。对于西方国家来说,你可能只允许使用ASCII码,它可能在各种实现中最为兼容。 –

回答

0

鉴于熵是相同的,UTF8和UTF16之间的选择真的没有关系。

+0

我在想,如果人们想要手动解密从我提供的服务中恢复的数据,遵循行业标准可能是有用的,这样他们就不必做非常规的事情。 但我已经注意到,在我查看的情况下,UTF-8是标准化的。 (https://github.com/bitcoin/bips/blob/master/bip-0038.mediawiki) –