首页 > 编程语言 > 详细

摘要算法

时间:2018-03-18 11:39:08      阅读:207      评论:0      收藏:0      [点我收藏+]

是什么

  1. 给定任意长度数据生成定长的密文;

    • md5 输出32 hex字符
    • sha1 输出40 hex字符
    • sha256 输出64 hex字符
  2. 摘要结果不可逆,不能通过密文还原出原数据;

    • 破解1: 彩虹表, 提前生成的简单密码表摘要.
    • 破解2: 对密文进行碰撞; 构造一个输入,产生和密文一样的摘要,从而发现原文.
    • 解决: 加盐提高破解难度.

有什么用

  1. 通常用来做 数据完整性验证加密用户密码.
  2. 加密用户密码时, 存储在数据库的是密文; 由于不可逆, 所以密码不能找回, 只能重置.
  3. 加密用户密码时, 加盐提高破难度.

例子

1. 一次摘要

import hashlib

m = hashlib.md5(b‘adi‘)
log(m.hexdigest()) # c46335eb267e2e1cde5b017acb4cd799

s = hashlib.sha1(b‘adi‘)
log(s.hexdigest()) # b3e8ff7ac1c7e75661e16152a5dce1ff36a3e140

2. 加salt

def salted_password(password, salt):
    def md5hex(text):
        return hashlib.md5(text.encode(‘ascii‘)).hexdigest()
    hash1 = md5hex(password + salt)
    return hash1

3. 加salt 和 连续加密并用


def salted_password(password, salt):
    def md5hex(text):
        return hashlib.md5(text.encode(‘ascii‘)).hexdigest()
    def sha1hex(text):
        return hashlib.sha1(text.encode(‘ascii‘)).hexdigest()
    hash1 = md5hex(password)
    hash2 = sha1hex(hash1 + salt)
    return hash2

摘要算法

原文:https://www.cnblogs.com/zcat/p/zhai-yao-suan-fa.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!