Scrypt和Cryptsharp的示例代码

Wil*_*rst 8 c# encryption cryptography scrypt

我在Google上搜索过,我找不到使用Cryptsharp库的Scrypt用法代码示例(用于哈希密码).

你能提供哈希密码的样本吗?

Maa*_*wes 15

这只是一个电话,所以我将引导您完成参数:

  1. key:这是您的密码,使用UTF-8编码(没有字节顺序标记)将您的密码编码为字节数组;
  2. salt:一串安全的随机字节,与scrypt函数的结果一起存储,16个字节应该足够;
  3. cost:给定的建议是262144,但如果您的服务器可以处理额外的负载,您可能希望增加该值;
  4. blockSize:看成本,给出的建议是8;
  5. parallel:除非你想尝试多线程,否则我会把它保持为1;
  6. maxThreads:总的来说null会很好;
  7. derivedKeyLength:嗯,这取决于,虽然密码128应该是充足的,但是你的密码不太可能超过128位的安全性.

你应该至少储存盐和结果.如果要将它们存储为字符串,则可能需要使用base 64编码.

我建议您存储一个额外的数据:基于密码的密钥派生方案(PBKDF)的版本.比如说,设置1为使用scrypt,使用给定的密钥编码,salt大小,成本,blocksize等.在这种情况下,您可以稍后升级您的方案(您需要用户提供他/她的密码才能执行此操作,因此您将不得不在线完成此操作,因此您最终会同时运行多个方案).

请注意,您可以链接PBKDF函数调用,因此您可以使用原始PBKDF输出并将其用作下一个PBKDF的输入.在这种情况下,用户不必提供密码(此提示是在另一个问题上从CodesInChaos获取的).