首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#模拟php加密

C#模拟php加密
EN

Stack Overflow用户
提问于 2015-09-08 17:56:55
回答 1查看 1.1K关注 0票数 3

我需要使用C#对密码进行哈希处理,以使其他软件能够理解它。最初,php的crypt函数就是这样做的。它具有以下输出

代码语言:javascript
复制
$6$rounds=1000$1f$yeKGQo0b8MqqMpocFla8uKLE6GOpEygSQUH4qMi4msJZsD50Eh00bU4GwoGGPEeLMdG6C17ehl/l8SrcOABdC0

我猜是SHA512。。如何用C#实现php的加密功能?

原创php

代码语言:javascript
复制
$salt = '$6$rounds=1000$'.dechex(rand(0,15)).dechex(rand(0,15)).'$';
$crypted = crypt($password, $salt);
EN

回答 1

Stack Overflow用户

发布于 2015-10-01 20:55:05

对于所有常见的加密变体,CryptSharp都会计算这个值。

生成SHA-512加盐哈希(此算法的默认轮数为5000):

代码语言:javascript
复制
using CryptSharp;
string hash = Crypter.SHA512.Crypt(password);

使用自定义轮数:

代码语言:javascript
复制
var saltOptions = new CrypterOptions() { { CrypterOption.Rounds, 10000 } };
string salt = Crypter.SHA512.GenerateSalt(saltOptions);
string hash = Crypter.SHA512.Crypt(password, saltOptions);

验证哈希:

代码语言:javascript
复制
bool matched = Crypter.CheckPassword(testPassword, hash);

另外,原始的PHP确实应该受到保护。salt只有8位,由rand生成(改为使用openssl_random_pseudo_bytes )。哈希特别选择默认轮数的五分之一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32454716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档