Python hashlib模块与subprocess模块使用详细介绍

目录
  • 1、什么是哈希hash
  • 2、hash的用途
  • 3、如何用
  • 4、subprocess模块

1、什么是哈希hash

hash一类算法,该算法接受传入的内容,经过运算得到一串hash值

hash值的特点:

  • 只要传入的内容一样,得到的hash值必然一样
  • 不能由hash值返解成内容
  • 不管传入的内容有多大,只要使用的hash算法不变,得到的hash值长度是一定

2、hash的用途

用途1:特点II用于密码密文传输与验证

用途2:特点I、III用于文件完整性校验

3、如何用

import hashlib
m=hashlib.md5()
m.update('hello'.encode('utf-8'))
m.update('world'.encode('utf-8'))
res=m.hexdigest() # 'helloworld'
print(res)
m1=hashlib.md5('he'.encode('utf-8'))
m1.update('llo'.encode('utf-8'))
m1.update('w'.encode('utf-8'))
m1.update('orld'.encode('utf-8'))
res=m1.hexdigest()# 'helloworld'
print(res)

模拟撞库

cryptograph='aee949757a2e698417463d47acac93df'
import hashlib
# 制作密码字段
passwds=[
    'alex3714',
    'alex1313',
    'alex94139413',
    'alex123456',
    '123456alex',
    'a123lex',
]
dic={}
for p in passwds:
    res=hashlib.md5(p.encode('utf-8'))
    dic[p]=res.hexdigest()
# 模拟撞库得到密码
for k,v in dic.items():
    if v == cryptograph:
        print('撞库成功,明文密码是:%s' %k)
        break

提升撞库的成本=>密码加盐

import hashlib
m=hashlib.md5()
m.update('天王'.encode('utf-8'))
m.update('alex3714'.encode('utf-8'))
m.update('盖地虎'.encode('utf-8'))
print(m.hexdigest())

4、subprocess模块

subprocess使用当前系统默认编码,得到结果为bytes类型,在windows下需要用gbk解码

import subprocess
obj=subprocess.Popen('echo 123 ; ls / ; ls /root',shell=True,
                 stdout=subprocess.PIPE,  #正确的管道
                 stderr=subprocess.PIPE, #错误的管道
                 )
# print(obj)
# res=obj.stdout.read()
# print(res.decode('utf-8'))
err_res=obj.stderr.read()
print(err_res.decode('gbk')) #  windows下需要用gbk解码mac、linux用utf-8解码

到此这篇关于Python hashlib模块与subprocess模块使用详细介绍的文章就介绍到这了,更多相关Python hashlib模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python hashlib模块详情

    目录 1. hashlib 模块概述 1.1hashlib 模块特点 1.2hashlib 模块使用步骤 2. hashlib 工作原理 2.1hash 算法特点 2.2hash 构造方法 2.3hash 算法过程 2.4hash 常用算法 3. hashlib 属性方法 4. 实操 5.总结 前言: 在互联网的时代,我们在网络中传输过程中都是要经过加密的,常见网络数据传输的加密方式有MD5和RSA算法.当然,加密算法还有很多中按加密.解密方式不同分为:对称加密.非对称加密.hash加密.其中M

  • 简单了解Python hashlib模块

    一.hashlib模块 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 :SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法. 1.使用hashlib模块进行MD5加密. import hashlib m = hashlib.md5() m.update(b"Hello") m.update(b"It's me") print(m.hexdigest()) m.update(b"It's been a long

  • Python加密与解密模块hashlib与hmac

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示). MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示. 一.hashlib加密模块 hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.SHA224.SHA256.SHA384.SH

  • Python基础之hashlib模块subprocess模块logging模块

    目录 一.hashlib模块 基本操作与用法 二.subprocess模块简介 基本操作与用法 三.logging模块简介 基本操作与用法 一.hashlib模块 什么是哈希模块: hashlib模块是一种加密模块,内部存有多种加密类型 加密的作用: 可将明文数据进行加密,转换成一串密文,密文越长说明文件加密的越复杂 加密算法的种类: md5 base64 hmac sha系列(sha1.sha224.sha256等等) 补充说明: 1.算法不变,如果内容相同,那么加密的结果肯定相同 2.待加密

  • 盘点Python加密解密模块hashlib的7种加密算法(推荐)

    前言 在程序中我们经常可以看到有很多的加密算法,比如说MD5 sha1等,今天我们就来了解下这下加密算法的吧,在了解之前我们需要知道一个模块嘛就是hashlib,他就是目前Python一个提供字符加密的模块,它加密的字符类型为二进制编码,所以直接加密字符串会报错. import hashlib string='任性的90后boy' #使用encode进行转换 sha1 = hashlib.sha1() sha1.update(string.encode('utf-8')) res = sha1.

  • Python基础之hashlib模块详解

    一.hashlib简介 1.什么叫hash: hash是一种算法(不同的hash算法只是复杂度不一样)(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值 2.hash值的特点是(hash值/产品有三大特性:): 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验 不能由hash值返解成内容=======>把密码做成has

  • Python hashlib模块详细讲解使用方法

    目录 1.hashlib的简介 2.hashlib的使用 1. 常用属性 2. 常用方法 3. 使用示例 3.hashlib的特点 4.实际演示 1. 基本演示 2. 应用场景案例 1.hashlib的简介 hashlib 是一个提供了一些流行的hash(摘要)算法的Python标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512等 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据

  • Python hashlib和hmac模块使用方法解析

    python之hashlib模块:主要提供字符加密功能,python3中将md5和sha模块整合到了hashlib模块,支持md5,sha1, sha224, sha256, sha384, sha512等算法 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import hashlib # md5 加密算法 a = hashlib.md5() a.update("Hello Lanten.".encode("utf-8"

  • Python移动测试开发subprocess模块项目实战

    目录 一.背景 二.subprocess 模块基础 1. subprocess.run 方法 2. subprocess.Popen 方法 3. run 与 Popen 的同步/异步对比实验 三.遇到的问题与解决方案 如何保证获取到完整的进程执行日志 解决方案如下: 一.背景 我们日常测试中存在大量重复的造数操作,且流程较长,为了提升测试效率,我们搭建了数据构造平台.平台采用了前端 + 脚本分离的形式,数据构造脚本独立存在,页面和脚本的关联关系通过页面配置进行绑定. 页面配置中,包含了脚本的路径

  • Python Counting Bloom Filter原理与实现详细介绍

    目录 前言 原理 一.BF 为什么不支持删除 二.什么是 Counting Bloom Filter 三.Counter 大小的选择 简单的实现 总结 前言 标准的 Bloom Filter 是一种比较简单的数据结构,只支持插入和查找两种操作.在所要表达的集合是静态集合的时候,标准 Bloom Filter 可以很好地工作,但是如果要表达的集合经常变动,标准Bloom Filter的弊端就显现出来了,因为它不支持删除操作.这就引出来了本文要谈的 Counting Bloom Filter,后文简

  • python模块之subprocess模块级方法的使用

    subprocess.run() 运行并等待args参数指定的指令完成,返回CompletedProcess实例. 参数:(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs).除input, capture_output, timeout, check,其他参数与Popen构造器参数一致. capture_output:如果设置为True,表示重定向stdout和stderr到管道,

  • python cx_Oracle模块的安装和使用详细介绍

    python cx_Oracle模块的安装 最近需要写一个数据迁移脚本,将单一Oracle中的数据迁移到MySQL Sharding集群,在linux下安装cx_Oracle感觉还是有一点麻烦的,整理一下,做个总结. 对于Oracle客户端,不只需要安装相应的python模块(这里我用了Oracle官方的python模块--cx_Oracle),还需要安装Oracle Client,一般选择Instant Client就足够了,还需要配置tnsnames.ora(当然也可以简单的通过host:p

  • python 开发的三种运行模式详细介绍

    Python 三种运行模式 Python作为一门脚本语言,使用的范围很广.有的同学用来算法开发,有的用来验证逻辑,还有的作为胶水语言,用它来粘合整个系统的流程.不管怎么说,怎么使用python既取决于你自己的业务场景,也取决于你自己的python应用能力.就我个人而言,我觉得python作为既可以用来进行业务的开发,也可以进行产品原型的开发.一般来说,python的运行主要下面这三种模式. 1.单循环模式 单循环模式使用的最多,也最简单,当然也最稳定.为什么呢,因为单循环本来代码就写的很少,出错

  • Python中字符串格式化str.format的详细介绍

    前言 Python 在 2.6 版本中新加了一个字符串格式化方法: str.format() .它的基本语法是通过 {} 和 : 来代替以前的 %.. 格式化时的占位符语法: replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" "映射"规则 通过位置 str.format() 可以接受不限个参数,位置可以

  • Python实现系统交互(subprocess)

    目录 一.os与commands模块 1. os.system()函数实例 2. os.popen()函数实例 3. commands.getstatusoutput()函数实例 二.subprocess模块 1. subprocess模块中的常用函数 2. 上面各函数的定义及参数说明 3. subprocess.CompletedProcess类介绍 4. 实例 三.subprocess.Popen介绍 1.subprocess.Popen的构造函数 2. subprocess.Popen类的

  • Python subprocess模块详细解读

    本文研究的主要是Python subprocess模块的相关内容,具体如下. 在学习这个模块前,我们先用Python的help()函数查看一下subprocess模块是干嘛的: DESCRIPTION This module allows you to spawn processes, connect to their input/output/error pipes, and obtain their return codes. 即允许你去创建一个新的进程让其执行另外的程序,并与它进行通信,获

随机推荐