用户名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();
....
答案 0 :(得分:2)
您可以使用String.Substring
:
int start = 0;
int length = 10;
string result = myString.Substring(start, length);
这将返回从位置start
开始并且长度为length
的原始字符串的子字符串。
因此,给出0
的值会产生原始字符串的第一个length
个字符。
但是,如果我可以提出建议,假设它在您的控制范围内,请不要以这种方式创建盐。使用完全随机的字符序列,最好使用安全随机生成器创建,并将其与用户名和散列密码一起存储。另外,确保你的盐相当长。我确信你可以节省所需的额外几个字节的数据库空间。