有办法做到这一点吗? 在我的映射类中,我想在将数据库数据提取到实体时解密MD5密码。这可能吗?
谢谢!
答案 0 :(得分:1)
MD5可用于加密密码。 MD5被视为broken。您所做的是使用MD5对密码进行哈希处理,并将其与数据库中的原始哈希值进行比较。由于MD5是单向的,如果密码相同,则哈希值相同。
编辑:
如果您正在寻找破解MD5加密密码,那就不同了。看看this
你首先明白这是不是技术特定的。这些是基本的计算机科学通用概念,可以使用各种技术实现。在你的情况下C#和NHibernate等
简单来说,您使用 MD5(消息摘要算法5)进行的操作是哈希。因为它是一个散列函数。看看this。
但是这个MD5是单向散列函数。 “单向”意味着从字符串中导出原始文本几乎是不可能的。这就是它用于密码加密的原因。因为您无法反转单向函数并获取实际密码。看看this也是如此。
我假设您要检查天气,插入的密码是否正确,并允许登录或执行必要的操作。 您不应该使用密码进行解密。如果你不打算破解密码。密码破解更像是一种猜测,使用已实现方法的弱点可以减少范围(在MD5哈希冲突中)。
在密码创建中,您获取密码并使用MD5(在您的情况下)对其进行散列。然后,此哈希值将是您要存储在数据库中的值。然后下次要查看天气时密码是否正确。然后再次获取密码,然后再次使用MD5对其进行哈希处理。然后你获取该哈希值并将其与数据库中的哈希值进行比较。如果匹配插入的密码是正确的。
我可以看到你是SO的新手。我建议您首先要更好地学习这些概念,无论您使用何种技术,这些概念都将对您有所帮助。
答案 1 :(得分:0)
您还可以问一下,在燃烧之前是否可以将一堆灰烬重新放回原木中。哈希是一种单向行动......你不能“逆转”它。您唯一能做的就是确定生成相同哈希值的一些源值(哈希冲突)。