python hashlib_Python hashlib模块实例使用详解

python hashlib_Python hashlib模块实例使用详解这篇文章主要介绍了Pythonhashlib模块实例使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下hashlib模块主要的作用:加密保护消息安全,常用的加密算法如MD5,SHA1等。1、查看可用的算法有哪些hashlib_algorithms.py#!/usr/bin/envpython#-*-coding:utf-8-*-i…

大家好,又见面了,我是你们的朋友全栈君。

这篇文章主要介绍了Python hashlib模块实例使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

hashlib模块主要的作用:

加密保护消息安全,常用的加密算法如MD5,SHA1等。

1、查看可用的算法有哪些

hashlib_algorithms.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

# 始终可用的算法

print(‘始终可用的算法 : {}’.format(sorted(hashlib.algorithms_guaranteed)))

print(‘需要结合OpenSSL可用算法 : {}’.format(sorted(hashlib.algorithms_available)))

运行效果

[root@ mnt]# python3 hashlib_algorithms.py

始终可用的算法 : [‘blake2b’, ‘blake2s’, ‘md5’, ‘sha1’, ‘sha224’, ‘sha256’, ‘sha384’, ‘sha3_224’, ‘sha3_256’, ‘sha3_384’, ‘sha3_512’, ‘sha512’, ‘shake_128’, ‘shake_256’]

需要结合OpenSSL可用算法 : [‘DSA’, ‘DSA-SHA’, ‘MD4’, ‘MD5’, ‘RIPEMD160’, ‘SHA’, ‘SHA1’, ‘SHA224’, ‘SHA256’, ‘SHA384’, ‘SHA512’, ‘blake2b’, ‘blake2s’, ‘dsaEncryption’, ‘dsaWithSHA’, ‘ecdsa-with-SHA1’, ‘md4’, ‘md5’, ‘ripemd160’, ‘sha’, ‘sha1’, ‘sha224’, ‘sha256’, ‘sha384’, ‘sha3_224’, ‘sha3_256’, ‘sha3_384’, ‘sha3_512’, ‘sha512’, ‘shake_128’, ‘shake_256’, ‘whirlpool’]

2、md5加密算法(没有加盐)

hashlib_md5.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

md5_obj = hashlib.md5()

md5_obj.update(‘123456’.encode(‘utf-8’))

print(md5_obj.hexdigest())

运行效果

[root@ mnt]# python3 hashlib_md5.py

e10adc3949ba59abbe56e057f20f883e

3、md5加密算法(加盐)

hashlib_md5_salt.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

salt = ‘1234’

md5_obj = hashlib.md5(salt.encode(‘utf-8’))

md5_obj.update(‘123456’.encode(‘utf-8’))

print(md5_obj.hexdigest())

运行效果

[root@ mnt]# python3 hashlib_md5_salt.py

b38e2bf274239ff5dd2b45ee9ae099c9

4、sha1加密算法

hashlib_sha1.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

sha1_obj = hashlib.sha1()

sha1_obj.update(‘123456’.encode(‘utf-8’))

print(sha1_obj.hexdigest())

hashlib_sha1.py

运行效果

[root@ mnt]# python3 hashlib_sha1.py

7c4a8d09ca3762af61e59520943dc26494f8941b

5、按加密算法名字进行动态加密(即hashlib.new(‘算法名字’))

hashlib_new.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

import argparse

lorem = ‘Hello World’

parser = argparse.ArgumentParser(‘hashlib Demo’)

parser.add_argument(

‘hash_name’,

choices=hashlib.algorithms_available,

help=’请输入hashlib的名字’

)

parser.add_argument(

‘data’,

nargs=’?’,

default=lorem,

help=’请输入要加密的数据’

)

args = parser.parse_args()

h = hashlib.new(args.hash_name)

h.update(args.data.encode(‘utf-8’))

print(h.hexdigest())

运行效果

[root@ mnt]# python3 hashlib_new.py md5 123456

e10adc3949ba59abbe56e057f20f883e

[root@ mnt]# python3 hashlib_new.py sha1 123456

7c4a8d09ca3762af61e59520943dc26494f8941b

[root@ mnt]# python3 hashlib_new.py sha256 123456

8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

[root@mnt]# python3 hashlib_new.py sha512 123456

ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413

6、大文件切片md5加密算法

hashlib_update.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

content = ”’Lorem ipsum dolor sit amet, consectetur adipisicing

elit, sed do eiusmod tempor incididunt ut labore et dolore magna

aliqua. Ut enim ad minim veniam, quis nostrud exercitation

ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis

aute irure dolor in reprehenderit in voluptate velit esse cillum

dolore eu fugiat nulla pariatur. Excepteur sint occaecat

cupidatat non proident, sunt in culpa qui officia deserunt

mollit anim id est laborum.”’

#一次性加密:缺点文件大的话,加载到内存会导致内存溢出

h = hashlib.md5()

h.update(content.encode(‘utf-8’))

all_at_once = h.hexdigest()

#利用生成器,切片加密,对大文件加密有用

def chunkize(size, text):

start = 0

while start < len(text):

chuck = text[start:start + size]

yield chuck

start += size

return

#一行一行加密

h = hashlib.md5()

for chunk in chunkize(64,content.encode((‘utf-8’))):

h.update(chunk)

line_by_line = h.hexdigest()

print(‘一性次加密结果 : ‘,all_at_once)

print(‘一行一行加密结果 : ‘,line_by_line)

运行效果

[root@ mnt]# python3 hashlib_update.py

一性次加密结果 : 3f2fd2c9e25d60fb0fa5d593b802b7a8

一行一行加密结果 : 3f2fd2c9e25d60fb0fa5d593b802b7a8

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134569.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月6日 下午4:16
下一篇 2022年6月6日 下午4:16


相关推荐

  • 数据结构之数组和链表的区别

    数据结构之数组和链表的区别第一题便是数据结构中的数组和链表的区别数组(Array)一、数组特点:所谓数组,就是相同数据类型的元素按一定顺序排列的集合;数组的存储区间是连续的,占用内存比较大,故空间复杂的很大。但数组的二分查找时间复杂度小,都是O(1);数组的特点是:查询简单,增加和删除困难;1.1在内存中,数组是一块连续的区域1.2数组需要预留空间在使用前需要提前申请所占内存的大小,…

    2022年6月29日
    19
  • 深入理解JVM—JVM垃圾回收机制[通俗易懂]

    深入理解JVM—JVM垃圾回收机制[通俗易懂]垃圾回收是指不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收,垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,程序员唯一能做的就是通过调用System.gc方法来建议执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。这也是垃圾收集器的最主要的缺点。当然相对于它给程序员带来的巨大方便性而言,这个缺点是瑕不掩瑜的。先谈一下新生代与老年代根据垃圾回…

    2022年5月20日
    45
  • 大模型应用开发实战:AI Agent与智能体开发技术解析

    大模型应用开发实战:AI Agent与智能体开发技术解析

    2026年3月16日
    2
  • [数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念「建议收藏」

    [数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念「建议收藏」ODS是什么?ODS全称是OperationalDataStore,操作数据存储.“面向主题的”,数据运营层,也叫ODS层,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。但是,这一层面的数据却不等同于原始数据。在源数据装入这一层时,要进行诸如去噪(例如有一条数据中人的年龄是300岁,这种属于异常数据,就需要提前做一些处理)、去重(例如在个人资料表中,同一ID却有两条重复

    2022年4月19日
    110
  • 超硬核!小白读了这篇文章,就能在算法圈混了[通俗易懂]

    作为一只超级硬核的兔子,从来不给你说废话,只有最有用的干货!这些神级算法送给你目录第一节1.1bogo排序1.2位运算1.3打擂台1.4morris遍历第二节2.1睡眠排序2.2会死的兔子2.3矩阵快速幂2.4摔手机/摔鸡蛋时空复杂度目录二分尝试较优的策略归纳表达式写出暴力递归改为动态规划压缩空间四边形不等式优化换一种思路最优解测试:第三节3.1斐波那契之美3.2桶排序3.3快速排序…

    2022年4月17日
    52
  • 腾讯“龙虾家族”热点问题详解:安装免费但调用模型会产生费用,考虑在各地闪现开展线下免费装机活动

    腾讯“龙虾家族”热点问题详解:安装免费但调用模型会产生费用,考虑在各地闪现开展线下免费装机活动

    2026年3月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号