我无法找到PBKDF2-HMAC-SHA-512的已发布测试向量.我已经构建了一个函数(最终!)在RFC 4231中重现了7个HMAC-SHA-512测试向量,并在此线程中找到了PBKDF2-HMAC-SHA-256的32字节测试向量.
以下是它为PBKDF2-HMAC-SHA-512生成的内容.谁能帮我验证这个输出?
谢谢,弗雷德
Input:
P = "password"
S = "salt"
c = 1
dkLen = 64
Output:
DK = 86 7f 70 cf 1a de 02 cf
f3 75 25 99 a3 a5 3d c4
af 34 c7 a6 69 81 5a e5
d5 13 55 4e 1c 8c f2 52
c0 2d 47 0a 28 5a 05 01
ba d9 99 bf e9 43 c0 8f
05 02 35 d7 d6 8b 1d a5 …Run Code Online (Sandbox Code Playgroud) 我试图创建在ASP.Net成员资格系统默认的SHA-1密码哈希的纯T-SQL表示.理想情况下,我会得到的是:
UserName Password GeneratedPassword
cbehrens 34098kw4D+FKJ== 34098kw4D+FKJ==
Run Code Online (Sandbox Code Playgroud)
注意:那里有伪造的base-64文本.我有base64_encode和解码函数正确往返.这是我的尝试,但不起作用:
SELECT UserName, Password, dbo.base64_encode(HASHBYTES('SHA1', dbo.base64_decode(PasswordSalt) + 'test')) As TestPassword FROM aspnet_Users U JOIN aspnet_membership M ON U.UserID = M.UserID
Run Code Online (Sandbox Code Playgroud)
我尝试了很多关于主题的变化,但没有用.我需要在纯T-Sql中执行此操作; 涉及控制台应用程序或类似的东西将使工作翻倍.
因此,如果有人能提供从ASP.Net会员资料中复制该密码的语法应该是什么,我将非常感激.
我有一个项目,我们需要将许多用纯文本密码的用户迁移到一个新的数据库中,我们将对密码进行哈希处理.
新系统使用Entity Framework,需要使用Asp.Net Identity框架进行身份验证.
我发现我可以在C#中生成一个正确的哈希密码,Entity Framework可以毫无问题地读取该密码.
public static string HashPassword(string password)
{
byte[] salt;
byte[] buffer2;
using (var bytes = new Rfc2898DeriveBytes(password, 0x10, 0x3e8))
{
salt = bytes.Salt;
buffer2 = bytes.GetBytes(0x20);
}
byte[] dst = new byte[0x31];
Buffer.BlockCopy(salt, 0, dst, 1, 0x10);
Buffer.BlockCopy(buffer2, 0, dst, 0x11, 0x20);
return Convert.ToBase64String(dst);
}
Run Code Online (Sandbox Code Playgroud)
SQL中是否有类似的东西我可以在INSERT语句中使用SELECT到另一个表?
我在后端有一个表,我将密码转换成后存储密码hash.HASHBYTES('SHA2_512', 'Welcome1').它存储在后端,如下所示:
0xDA07C08A2C2EF3710E688BFF476A8A09D52D6D34B6EE3C41A4B1F58F2949792EF20079565CA0D78E2758B33B50A13C9829C08BDF670DC802E627F289364D203A.
Run Code Online (Sandbox Code Playgroud)
现在,我希望在将其转换回"Welcome1"后,从前端的后端显示此密码.
我无法做到这一点并获得密码system.byte[].任何人都可以帮我把'Welcome1'作为前端的价值.
要求是为管理员创建一个页面,他可以看到所有用户,他们的详细信息包括密码.如果他点击一个用户(链接按钮),他的所有细节都应该出现在包括密码的文本框中.我知道它不是显示密码的好方法,但想知道我们拥有的所有选项.如果没有,我可以让业务知道这是不可能的.谢谢你的帮助.