只获取256位哈希的前10个字符而不是完整的哈希值

时间:2017-07-27 17:28:29

标签: c# xamarin.forms sha256 salt-creation

用户名ABC
密码DEF
Salt =用户名+密码IE; ABCDEF(盐键)

现在,使用SHA256算法对此salt密钥进行哈希处理,并在哈希后对saltkey(ABCDEF)的输出进行哈希处理:jjaiBx04mb

现在我如何将其截断为较小的哈希值,以便结果只是前10个字符,例如:var scope = new ManagementScope(@"\\.\root\Microsoft\Windows\SMB"); var query = new WqlEventQuery( @"SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'MSFT_SmbOpenFile'" ); ManagementEventWatcher watcher = new ManagementEventWatcher(scope, query); watcher.EventArrived += new EventArrivedEventHandler(HandleEvent); watcher.Start(); ....

1 个答案:

答案 0 :(得分:2)

您可以使用String.Substring

int start = 0;
int length = 10;
string result = myString.Substring(start, length);

这将返回从位置start开始并且长度为length的原始字符串的子字符串。

因此,给出0的值会产生原始字符串的第一个length个字符。

但是,如果我可以提出建议,假设它在您的控制范围内,请不要以这种方式创建盐。使用完全随机的字符序列,最好使用安全随机生成器创建,并将其与用户名和散列密码一起存储。另外,确保你的盐相当长。我确信你可以节省所需的额外几个字节的数据库空间。