我想创建一个函数,使我能够始终基于这两个输入参数生成唯一值:
public string ReturnUniqueValue(DateTime date, string ID)
{
// Logic here
}
Run Code Online (Sandbox Code Playgroud)
日期参数的格式如下:
2017-08-14 11:55:32.00
Run Code Online (Sandbox Code Playgroud)
而ID的格式如下:
112452573848
Run Code Online (Sandbox Code Playgroud)
我想生成一个长度为 40 个字符且从不重复的唯一哈希值。
这可以使用日期时间参数+唯一的ID字符串吗?
我认为日期时间永远不会相同(这几乎是不可能的),因此这应该能够始终生成唯一的值?
你可以
在代码中:
public string ReturnUniqueValue(DateTime date, string ID)
{
var result = default(byte[]);
using (var stream = new MemoryStream())
{
using (var writer = new BinaryWriter(stream, Encoding.UTF8, true))
{
writer.Write(date.Ticks);
writer.Write(ID);
}
stream.Position = 0;
using (var hash = SHA256.Create())
{
result = hash.ComputeHash(stream);
}
}
var text = new string[20];
for (var i = 0; i < text.Length; i++)
{
text[i] = result[i].ToString("x2");
}
return string.Concat(text);
}
Run Code Online (Sandbox Code Playgroud)
注意:如果您只想为多个参数提供一个唯一值,则简单的串联应该已经可以做到。由于您明确要求使用 40 个字符的“哈希”,因此这个更复杂的解决方案可能更适合。
注意:将其扩展为更多相同类型的参数(例如两个字符串)应包括流中的参数位置以避免冲突((a, b) != (b, a))。
| 归档时间: |
|
| 查看次数: |
9517 次 |
| 最近记录: |