我可以使用 sha1,sha256 lib 生成的字符串作为哈希键吗
can I use sha1,sha256 lib generated string as a hash key
我正在寻找一种方法来根据 class 的一些字符串属性创建散列键。
我在想我可以使用 sha1 或 sha256 库来生成密钥的值。
但我想知道如果我将该值存储在数据库中,另一个应用程序或不同的机器或不同版本的 .net 和 .netcore 是否能够在给定相同字符串属性的情况下生成相同的哈希值?生成哈希波纹管的简单示例:
public class Lead
{
public Lead(string firstname, string lastname, string phoneNumber)
{
this.firstname = firstname;
this.lastname = lastname;
phonenumber = phoneNumber;
this.hash = GetHash($"{firstname}{lastname}{phoneNumber}");
}
private string GetHash(string key)
{
using var sha = new System.Security.Cryptography.SHA256Managed();
byte[] textData = System.Text.Encoding.UTF8.GetBytes(key);
byte[] hash = sha.ComputeHash(textData);
return BitConverter.ToString(hash).Replace("-", string.Empty);
}
public string firstname;
public string lastname;
public string phonenumber;
public string hash;
}
答案是肯定的,我还能够在 .net 中加密,并在 rails 中解密值。
我正在寻找一种方法来根据 class 的一些字符串属性创建散列键。 我在想我可以使用 sha1 或 sha256 库来生成密钥的值。 但我想知道如果我将该值存储在数据库中,另一个应用程序或不同的机器或不同版本的 .net 和 .netcore 是否能够在给定相同字符串属性的情况下生成相同的哈希值?生成哈希波纹管的简单示例:
public class Lead
{
public Lead(string firstname, string lastname, string phoneNumber)
{
this.firstname = firstname;
this.lastname = lastname;
phonenumber = phoneNumber;
this.hash = GetHash($"{firstname}{lastname}{phoneNumber}");
}
private string GetHash(string key)
{
using var sha = new System.Security.Cryptography.SHA256Managed();
byte[] textData = System.Text.Encoding.UTF8.GetBytes(key);
byte[] hash = sha.ComputeHash(textData);
return BitConverter.ToString(hash).Replace("-", string.Empty);
}
public string firstname;
public string lastname;
public string phonenumber;
public string hash;
}
答案是肯定的,我还能够在 .net 中加密,并在 rails 中解密值。