我使用ComputeHash
散列数据如何从散列数据中学习原始数据?
private void btn_Hash_Click(object sender, EventArgs e)
{
HashAlgorithm ha = HashAlgorithm.Create();
Stream file = new FileStream(@"C:\temp\simetrik.txt", FileMode.Open, FileAccess.Read);
hashClass.hash = ha.ComputeHash(file);
listBox1.Items.Add(BitConverter.ToString(hashClass.hash));
}
答案 0 :(得分:6)
你没有。 cryptographic hash的全部意义在于,一般来说,反转在计算上是不可行的。您可以做的最好的事情是检查已知的词典和rainbow tables。这些都不会对独特的明文产生太大帮助。也许您应该使用encryption algorithm代替。
此外,您应该明确指定所需的算法。 E.g:
HashAlgorithm.Create("SHA1");
答案 1 :(得分:0)
唯一的方法是使用rainbow table,但我确定这不是你想要的。 :)
答案 2 :(得分:0)
你无法将其转换回来,哈希只能以一种方式工作。原因是(1)它丢失了数据 - 你的哈希使用的内存比原始数据少得多。考虑将字符串哈希到int(2)许多哈希算法是故意构造的,以使计算上不可能反转它们。