我需要使用C#对密码进行哈希处理,以使其他软件能够理解它。最初,php的crypt函数就是这样做的。它具有以下输出
$6$rounds=1000$1f$yeKGQo0b8MqqMpocFla8uKLE6GOpEygSQUH4qMi4msJZsD50Eh00bU4GwoGGPEeLMdG6C17ehl/l8SrcOABdC0我猜是SHA512。。如何用C#实现php的加密功能?
原创php
$salt = '$6$rounds=1000$'.dechex(rand(0,15)).dechex(rand(0,15)).'$';
$crypted = crypt($password, $salt);发布于 2015-10-01 20:55:05
对于所有常见的加密变体,CryptSharp都会计算这个值。
生成SHA-512加盐哈希(此算法的默认轮数为5000):
using CryptSharp;
string hash = Crypter.SHA512.Crypt(password);使用自定义轮数:
var saltOptions = new CrypterOptions() { { CrypterOption.Rounds, 10000 } };
string salt = Crypter.SHA512.GenerateSalt(saltOptions);
string hash = Crypter.SHA512.Crypt(password, saltOptions);验证哈希:
bool matched = Crypter.CheckPassword(testPassword, hash);另外,原始的PHP确实应该受到保护。salt只有8位,由rand生成(改为使用openssl_random_pseudo_bytes )。哈希特别选择默认轮数的五分之一。
https://stackoverflow.com/questions/32454716
复制相似问题