zoukankan      html  css  js  c++  java
  • python MD5加密

    python MD5() 加密

     

    摘要算法

    python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。

    摘要算法又称哈希算法,散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

    摘要算法就是通过摘要函数 f() 对任意长度的数据 date计算出固定长度的摘要 digest,目的是为了发现原始数据是否被人篡改过。

    我们以常见的摘要算法MD5为例,计算出一个字符串的MD5值:

    1 import hashlib
    2 
    3 md5 = hashlib.md5()
    4 md5.update('how to user md5 in python hashlib?'.encode('utf-8'))
    5 print(md5.hexdigest())
    计算MD5值

    计算结果如下:

    4c850bdab2e3c34df385a2a228d2ea04
    

    如果数据量很大,可以分多次调用 update() ,最后的计算结果都是一样的:

    1 import hashlib
    2 
    3 md5 = hashlib.md5()
    4 md5.update('how to user md5 in '.encode('utf-8'))
    5 md5.update('python hashlib?'.encode('utf-8'))
    6 print(md5.hexdigest())
    分多次计算MD5值

    计算结果:

    4c850bdab2e3c34df385a2a228d2ea04

    MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。

    另一种常见的摘要算法是SHA1,调用SHA1和调用MD5完全类似:

    1 import  hashlib
    2 
    3 sha1 = hashlib.sha1()
    4 sha1.update('how to learning english?'.encode('utf-8'))
    5 print(sha1.hexdigest())
    计算sha1值

    计算结果如下:

    983b7e0be6b6d65fabf86149183c428da685d4a5
    

    SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。

    由于常用口令的MD5值很容易被计算出来,所以,要确保存储的用户口令不是那些已经被计算出来的常用口令的MD5,这一方法通过对原始口令加一个复杂字符串来实现,俗称“加盐”:

    应用:

     1 import hashlib     #导入模块
     2 
     3 def get_md5(date):
     4     obj = hashlib.md5('iuqe832643873gh'.encode('utf-8'))    #加盐iuqe832643873gh
     5     obj.update(date.encode('utf-8'))     # date 要加密的数据
     6     result = obj.hexdigest()
     7     return result
     8 val = get_md5('123')
     9 print(val)
    10 USER_LIST = []
    11 
    12 def register():
    13     print('************用户注册************')
    14     while True:
    15         user = input('请输入用户名:')
    16         if user == 'N':
    17             return
    18         pwd = input('请输入密码:')
    19         temp = {'username': user, 'password': get_md5(pwd)}
    20         USER_LIST.append(temp)
    21 
    22 def login():
    23     print('************用户登陆************')
    24     user = input('请输入用户名:')
    25     pwd = input('请输入密码')
    26     for item in USER_LIST:
    27          if item['username'] == user and item['password'] == get_md5(pwd):
    28              return True
    29 
    30 register()
    31 result = login()
    32 if result:
    33     print('登陆成功!')
    34 else:
    35     print('登陆失败!')
    模拟用户注册、登录
  • 相关阅读:
    Python变量小秘密
    Python编解码问题与文本文件处理
    Java持久层框架Mybatis入门
    teprunner重磅更新Git打通PyCharm与测试平台
    JMeter定时器设置延迟与同步
    Docker开启安全的TLS远程连接
    消息队列之如何保证消息的幂等性
    消息队列之如何保证消息的可靠传输
    spring技术内幕学习笔记01
    linux操作指南-04
  • 原文地址:https://www.cnblogs.com/luyi84895838/p/14171535.html
Copyright © 2011-2022 走看看