我有一个表格,里面记录了登录Telerik Sitefinity系统的凭证。我想要使用相同的登录凭证,但在一个没有Sitefinity库的不同应用程序中使用。我遇到了密码编码的问题,它被设置为哈希(默认是SHA1算法)。
我尝试使用以下代码对密码进行编码,但它与Sitefinity生成的不匹配。
我尝试使用以下代码对密码进行编码,但它与Sitefinity生成的不匹配。
public string EncodePassword(string pass, string salt)
{
byte[] bytes = Encoding.Unicode.GetBytes(pass);
byte[] src = Convert.FromBase64String(salt);
byte[] dst = new byte[src.Length + bytes.Length];
Buffer.BlockCopy(src, 0, dst, 0, src.Length);
Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length);
HashAlgorithm algorithm = HashAlgorithm.Create("SHA1");
byte[] inArray = algorithm.ComputeHash(dst);
return Convert.ToBase64String(inArray);
}
例子:
密码: password111
盐: 94EBE09530D9F5FAE3D002A4BF262D2F (在SF用户表中保存)
使用上述的函数加密哈希值: 8IjcFO4ad8BdkD40NJcgD0iGloU=
SF生成的哈希值: A24GuU8OasJ2bicvT/E4ZiKfAT8=
我搜索了一下,但找不到关于SF如何以不同方式生成编码后的密码的结果。如何在没有SF库的情况下使用由SF创建的登录凭据?