用户名 ABC
密码 DEF
Salt = 用户名 + 密码 IE;ABCDEF(盐键)
现在,这个盐键使用 SHA256 算法进行散列,散列后盐键(ABCDEF)的输出是:jjaiBx04mbD1ZvsLKuG6PyBFfJcYbl7iCnDCsi2l4tk=
现在我如何将其截断为较小的哈希,以便结果只是它的前 10 个字符,让我们说:jjaiBx04mb
用户名 ABC
密码 DEF
Salt = 用户名 + 密码 IE;ABCDEF(盐键)
现在,这个盐键使用 SHA256 算法进行散列,散列后盐键(ABCDEF)的输出是:jjaiBx04mbD1ZvsLKuG6PyBFfJcYbl7iCnDCsi2l4tk=
现在我如何将其截断为较小的哈希,以便结果只是它的前 10 个字符,让我们说:jjaiBx04mb
您可以使用String.Substring
:
int start = 0;
int length = 10;
string result = myString.Substring(start, length);
start
这将返回从 position 开始并具有 length的原始字符串的子字符串length
。
因此,给 start 一个值0
将产生length
原始字符串的第一个字符。
但是,如果我可以提出建议,假设它在您的控制范围内,请不要以这种方式创建盐。使用完全随机的字符序列,最好使用安全的随机生成器创建,并将其与用户名和散列密码一起存储。另外,一定要让你的盐相当长。我相信您可以节省它需要的额外几个字节的数据库空间。