• python


    python3中的hashlib库主要是为大家提供了python中常用的加密方式

    其中SHA1官方不再支持,不建议用。md5()的安全性不如SHA2,所以推荐使用SHA2做加密算法

    hashlib里面的加密方式都是单向加密,没有反加密方式,所以在使用时,比如密码验证,在数据库里面存储的是加密后的值,再把用户输入的密码进行相同加密方式,再对比

    hashlib里面主要提供 md5, sha1, sha224, sha256, sha384, sha512 算法
    各种加密算法在使用上,只是声明加密方式的时候名字不同,其他操作完全一样

    hashlib模块:

     1 import hashlib
     2 
     3 print(''' 
     4      =============cmd5加密============
     5     ''')
     6 
     7 m = hashlib.md5()   #声明用什么加密方式
     8 m.update(b"Hello")
     9 m.update(b"It's me")          #对数据加密用uodate()  注意要把被加密数据转为二进制形式
    10 print('cmd5加密结果:',m.hexdigest())
    11 
    12 print(''' 
    13      =============sha224加密============
    14     ''')
    15 
    16 m = hashlib.sha224()   #声明用什么加密方式
    17 m.update(b"Hello")
    18 m.update(b"It's me")
    19 print('sha224加密结果:',m.hexdigest())
    20 
    21 
    22 print(''' 
    23      =============sha256加密============
    24     ''')
    25 
    26 m = hashlib.sha256()   #声明用什么加密方式
    27 m.update(b"Hello")
    28 m.update(b"It's me")
    29 print('sha256加密结果:',m.hexdigest())
    30 
    31 print(''' 
    32      =============sha384加密============
    33     ''')
    34 
    35 m = hashlib.sha384()   #声明用什么加密方式
    36 m.update(b"Hello")
    37 m.update(b"It's me")
    38 print('sha384加密结果:',m.hexdigest())
    39 
    40 print(''' 
    41      =============sha512加密============
    42     ''')
    43 
    44 m = hashlib.sha512()   #声明用什么加密方式
    45 m.update(b"Hello")
    46 m.update(b"It's me")
    47 print('sha512加密结果:',m.hexdigest())
    48 
    49 '''
    50  
    51      =============cmd5加密============
    52     
    53 cmd5加密结果: 5ddeb47b2f925ad0bf249c52e342728a
    54  
    55      =============sha224加密============
    56     
    57 sha224加密结果: 56baaebedb486c687432e20c1675dd406146f5c17abf107ab018eaf5
    58  
    59      =============sha256加密============
    60     
    61 sha256加密结果: 54e3c292b4668c9697593680b71f15cfcc634031dc82349a7fd5ae1c544463ef
    62  
    63      =============sha384加密============
    64     
    65 sha384加密结果: 5346981d17ebdf271f45509861bcf6d0757f6a31c3fb58feb8b354b6b60810dcbb4d74dc937ab258676f8eae0324118f
    66  
    67      =============sha512加密============
    68     
    69 sha512加密结果: 1aa9c253210096bee3533370dacb3960f6a995a7d1e993c54d32d3ec43e496b3558ac05f87ca6ac9b06036e03f84a7c0ffebd3d14589385c7fd0b096cea967c0
    70 
    71 
    72 '''

    hmac模块:

      还有一个基于hashlib模块的加密模块-- hmac 模块

      hmac模块是在hashlib模块之上,再在它内部对我们创建 key 和 内容 再进行处理然后再加密散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(Message Authentication Code)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;

      一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后用key把消息加密,接收方用 (key + 消息明文)再加密,拿加密后的值 跟 发送者

    的相对比是否相等,这样就能验证消息的真实性,及发送者的合法性了

      hmac模块用法:

    1 import hmac
    2 
    3 k = hmac.new(b'xtsec')   #创建一个自定义key
    4 k.update(b'hello world!')   #对消息进行加密,可以分开加密,但是要注意空格也要算在内 eg:k.update(b'hello ')   k.update(b'world') 与前面一样
    5 print(k.hexdigest())

    结果: e9814092d76de9f4502a39b172a848b2
  • 相关阅读:
    Mesos 配置项解析
    1039. Course List for Student (25)
    Cts框架解析(12)-ITargetPreparer
    通过ulimit改善linux系统性能(摘自IBM)
    HDU 1080 DP
    C语言调用Lua函数
    创建MySQL从库
    C# Func<>托付
    SpringMVC入门
    VNC连接Ubuntu 16.04桌面灰色的问题解决
  • 原文地址:https://www.cnblogs.com/xtsec/p/6681619.html
Copyright © 2020-2023  润新知