Unhashing哈希C#
有人可以反转我正在使用的这个方便的哈希码吗?
using System.Security.Cryptography; public static string EncodePasswordToBase64(string password) { byte[] bytes = Encoding.Unicode.GetBytes(password); byte[] inArray = HashAlgorithm.Create("SHA1").ComputeHash(bytes); return Convert.ToBase64String(inArray); }
我最终做的一切都失败了:(。
不,你不能反转哈希。 典型的过程是将其他输入与您拥有的哈希进行比较,以检查它们是否相同。
喜欢(伪):
initial = Hash(password); possible = Hash("test"); if( initial == possible ){ // we infer that password = "test" }
但请注意,不应再使用SHA1,SHA0和MD5; (由于各自的不同程度的破坏)。 你应该使用SHA-2
“unhashing”唯一真正的方法是使用彩虹表,这是为所有可能的输入计算的哈希值的大表。 您查找哈希并获得可能是原始输入的内容。
https://en.wikipedia.org/wiki/Rainbow_table
不幸的是,您不能取消哈希SHA1,MD5或任何其他单向哈希方法。 虽然可以撤消BASE-64。
SHA是“安全散列算法”的NSA首字母缩写词。
根据定义,安全散列难以反转 – 否则它们将不安全。
如果您希望能够轻松计算将生成相同哈希值的源,则需要使用可逆哈希函数(即使这样,由于哈希冲突导致多个源输入可能导致相同的哈希冲突,您也可能无法获得原始源哈希输出)。
上述就是C#学习教程:Unhashing哈希C#分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1012645.html