码迷,mamicode.com
首页 > 编程语言 > 详细

摘要算法

时间:2018-03-18 12:00:09      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:密码   ret   lan   是什么   ted   彩虹表   md5   hashlib   alt   

是什么

  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

摘要算法

标签:密码   ret   lan   是什么   ted   彩虹表   md5   hashlib   alt   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!