【发布时间】:2017-12-04 12:47:40
【问题描述】:
我有使用 SHA256 生成哈希码的简单代码,但是对于相同的输入,它会给出不同的结果。但是,如果我在引号中声明相同的字符串值,例如 _input= "test",那么它会返回相同的结果。
public static System.String generateKey(System.String _input)
{
System.Byte[] convertedArr;
SHA256Managed sh = new System.Security.Cryptography.SHA256Managed();
convertedArr = sh.ComputeHash(System.Text.Encoding::UTF8.GetBytes(_inputString),0, System.Text.Encoding::UTF8.GetByteCount(_input));
hashCode = System.Convert::ToBase64String(convertedArr);
return hashCode;
}
【问题讨论】:
-
_input的值是多少? -
请显示更多您的代码 - 输入内容、FNSGenerateHashDetails 等
-
不使用请不要标记c#。
-
FNSGenerateHashDetails是否可以在哈希输入中添加一些“盐”? -
当您在函数调用中嵌入函数调用时,调试变得更加困难。使用中间变量,任何体面的编译器都会减少代码。编写代码以供人类理解和调试。最后提供一个minimal reproducible example,将其添加到问题alonf 中,带有文本值和中间值,例如
FNSGenerateHashDetails::GetBytes和System.Text.Encoding::UTF8.GetByteCount的结果。简洁和调试代码不是 leet。