Python之Md5使用等加密

2023-05-16

目录

        • 一、Python之md5使用
        • 二、Python之sha1使用
        • 三、Python之base64使用
        • 四、Python之rsa使用
        • 五、Python之aes、des

一、Python之md5使用

  • 功能:MD5签名是一个哈希函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示),不可逆
  • 传入参数:bytes类型
  • 导入:from hashlib import md5
  • 例子1:
    import requests
    from hashlib import md5
    url = "http://p3-tt.bytecdn.cn/list/pgc-image/cd7367fde2454137b2874f62dba5c43f"
    md5_url = md5(url.encode('utf8')).hexdigest()
    print(md5_url)  # 2f7108ac307fd06f5995948f35a70f2f
    
    response = requests.get(url)  
    md5_content = md5(response.content).hexdigest()
    print(md5_content)  # bf93cde0b6edb50b9e95106c11fdd5ad
    
  • 例子2:
    from hashlib import md5
    chinese = '你好呀'
    md5_chinese = md5(chinese.encode('utf8')).hexdigest()
    print(md5_chinese)  # 4f65fdb33e0f2bd0de6bd1b41fdea968
    
  • 例子3:
    from hashlib import md5
    english = 'd8hgeo-2d73k0s2'
    md5_str = md5(english.encode('utf8')).hexdigest()
    print(md5_str)  # 74335cc0ff464e7006d1530260385a52
    

二、Python之sha1使用

  • 功能:安全哈希算法,SHA1基于MD5,加密后的数据长度更长
  • 传入参数:bytes类型
  • 导入:from hashlib import sha1
  • 例子1:
    from hashlib import sha1
    
    
    def sha1_encrypt_text(decrypt_text: str) -> str:
        """
        SHA1加密
        :param decrypt_text: 明文
        :return: 密文
        """
        return sha1(decrypt_text.encode('utf8')).hexdigest()
    
    
    print(sha1_encrypt_text("213432"))
    

三、Python之base64使用

  • 功能:对任意字符串加密,输出常常以=结尾
  • 传入参数:bytes类型
  • 导入:import base64
  • 例子1:
    import base64
    
    
    def base64_encrypt_text(decrypt_text: str) -> str:
        """
        Bse64加密
        :param decrypt_text: 明文
        :return: 密文
        """
        return base64.b64encode(decrypt_text.encode("utf-8")).decode()
    
    
    def base64_decrypt_text(encrypt_text: str) -> str:
        """
        Bse64解密
        :param encrypt_text: 密文
        :return: 明文
        """
        return base64.b64decode(encrypt_text).decode("utf-8")
    
    
    # base64加密
    print(base64_encrypt_text("3243242"))
    # base64解密
    print(base64_decrypt_text("MzI0MzI0Mg=="))
    

四、Python之rsa使用

  • 功能:rsa是非对称加密,即加密用公钥加密,用私钥解密,传出通常是base64或者是16进制字符串形式
  • 传入参数:bytes类型
  • 导入:import rsafrom binascii import b2a_heximport base64
  • 例子1:公钥格式如-----BEGIN RSA PUBLIC KEY----- MIGJAoGBANkDMlvSfrZao.... -----END RSA PUBLIC KEY-----
    import rsa
    from binascii import b2a_hex
    import base64
    
    
    def rsa_encrypt_text1(public_key, decrypt_text: str, method="base64") -> str:
        """
        RSA加密
        :param public_key:  公钥
        :param decrypt_text: 明文
        :param method: 用base64加密还是16进制字符串
        :return: 加密后的数据
        """
        encrypt_text = rsa.encrypt(decrypt_text.encode('utf-8'), rsa.PublicKey.load_pkcs1(public_key))
        if method == "base64":
            return base64.b64encode(encrypt_text).decode()
        else:
            return b2a_hex(encrypt_text).decode()
    
    
    # 公钥格式:
    publicKey = '''
        -----BEGIN RSA PUBLIC KEY----- 
        MIGJAoGBANkDMlvSfrZaowpBQUF0gFRzwt3w0q4rWet33FdWuq39TBdCVicy4Zzw zX5ziuFExkdwbVrhEHBRkGNBJYVJ/1F1gAwd3KdyaId5NwATFkkLyM3wOtFqttwm o888U9KwIyhGH2bFkRIsk+KQmNQIR1m8Fgpdsy2JbnLd559HpTZZAgMBAAE= 
        -----END RSA PUBLIC KEY----- 
    '''
    print(rsa_encrypt_text1(publicKey, "nihao@456"))  # 以base64输出
    print(rsa_encrypt_text1(publicKey, "nihao@456", 'hex'))  # 以十六进制字符串输出
    
  • 例子2:公钥格式如-----BEGIN PUBLIC KEY----- MIGJAoGBANkDMlvSfrZao.... -----END PUBLIC KEY-----
    import rsa
    from binascii import b2a_hex
    import base64
    
    
    def rsa_encrypt_text2(public_key, _text: str, method="base64") -> str:
        """
        RSA加密,针对setPublicKey
        :param public_key:  公钥
        :param _text: 明文
        :param method: 用base64加密还是16进制字符串
        :return: 加密后的数据
        """
        encrypt_text = rsa.encrypt(_text.encode('utf-8'), rsa.PublicKey.load_pkcs1_openssl_pem(public_key))
        if method == "base64":
            return base64.b64encode(encrypt_text).decode()
        else:
            return b2a_hex(encrypt_text).decode()
    
    
    # 公钥格式:
    public_key1 = """
       -----BEGIN PUBLIC KEY-----
       MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDnJUXorWKGZEpLjgP9Aado78y8LwNiAqJNXkxLC0I5/rtnLmz8DuMgjxRVL+5iBeZ5a/Qm0zOOWd5/IJNLwZ6iAqX3NTxMuioAzaxXQWuhrgVJ+cxhWKuJGe1bsaPIUS+Py79a20FolQN+xT8Lf9aCTk9HdhjOd27LbX5DqwmO/wIDAQAB
       -----END PUBLIC KEY-----
    """
    print(rsa_encrypt_text2(public_key1, "nihao@456"))  # 以base64输出
    print(rsa_encrypt_text2(public_key1, "nihao@456", 'hex'))  # 以十六进制字符串输出
    
  • 例子3:公钥格式如978C0A92D2173439707498F0944...
    import rsa
    from binascii import b2a_hex
    import base64
    
    
    def rsa_encrypt_text3(key, _text: str, method="base64"):
        """
        RSA加密,针对new RSAKeyPair
        import rsa
        from binascii import b2a_hex
        :param key: 公钥的参数
        :param _text: 待加密的明文
        :param method: 用base64加密还是16进制字符串
        :return: 加密后的数据
        """
        e = int('010001', 16)
        n = int(key, 16)
        pub_key = rsa.PublicKey(e=e, n=n)
        encrypt_text = rsa.encrypt(_text.encode(), pub_key)
        if method == "base64":
            return base64.b64encode(encrypt_text).decode()
        else:
            return b2a_hex(encrypt_text).decode()
    
    
    # 公钥格式:
    public_key1 = "978C0A92D2173439707498F0944AA476B1B62595877DD6FA87F6E2AC6DCB3D0BF0B82857439C99B5091192BC134889DFF60C562EC54EFBA4FF2F9D55ADBCCEA4A2FBA80CB398ED501280A007C83AF30C3D1A142D6133C63012B90AB26AC60C898FB66EDC3192C3EC4FF66925A64003B72496099F4F09A9FB72A2CF9E4D770C41"
    print(rsa_encrypt_text3(public_key1, "nihao@456"))  # 以base64输出
    print(rsa_encrypt_text3(public_key1, "nihao@456", 'hex'))  # 以十六进制字符串输出
    

五、Python之aes、des

  • 点击链接查看AES、DES加密解密方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之Md5使用等加密 的相关文章

随机推荐

  • 什么是API,SDK和API之间有什么关系呢?

    随着软件规模的日益庞大 xff0c 常常需要把复杂的系统划分成小的组成部分 xff0c 编程接口的设计十分重要 xff0c 程序设计的实践中 xff0c 编程接口的设计首先要使软件系统的职责得到合理划分 xff0c 良好的接口设计可以降低系
  • PX4下gazebo 仿真 offboard模式(ubuntu18.04)

    PX4下gazebo 仿真 offboard模式 xff08 ubuntu18 04 xff09 1 ros与gazebo安装 这里不多说了 xff0c 上网找教程或者按照ros官网教程安装完成ros melodic的完整版 xff0c g
  • px4与gazebo的多无人机编队仿真,offboard模式

    px4下基于ros和gazebo的多无人机编队仿真 xff0c offboard模式 单机的offboard仿真见https blog csdn net weixin 43409270 article details 114585397 多
  • 软件工程面向对象方法、Coad、Booch、OMT、UML方法

    1 Booch方法 Booch最先描述了面向对象的软件开发方法的基础问题 xff0c 指出面向对象开发是一种根本不同于传统的功能分解的设计方法 面向对象的软件分解更接近人对客观事务的理解 xff0c 而功能分解只通过问题空间的转换来获得 B
  • 机器人地面站-[QGroundControl源码解析]-[1]

    目录 前言 一 CmdLineOptParser 二 JsonHelper 三 KMLDomDocument 四 ShapeFileHelper 五 SHPFileHelper 六 KMLHelper 七 LogCompressor 总结
  • 机器人地面站-[QGroundControl源码解析]-[2]

    目录 前言 一 QGC 二 QGCComboBox 三 QGCFileDownload 四 QGCLoggingCategory 五 QGCMapPalette 六 QGCPalette 七 QGCQGeoCoordinate 八 QGCT
  • 机器人地面站-[QGroundControl源码解析]-[9]-[Camera]

    目录 前言 一 QGCCameraManager 二 QGCCameraIO 三 QGCCameraControl 前言 本篇介绍Camera文件夹下的内容 xff0c 该文件夹下又三个类文件 xff0c 分别是QGCCameraManag
  • C++开发精髓 阅读笔记

    第三章 pstack的使用 将C 43 43 类对象实例指针作为线程函数的参数 bind函数 span class token keyword auto span newCallable span class token operator
  • js逆向工具-油猴Tampermonkey脚本hook案例

    目录 一 油猴下载与安装二 油猴脚本免费使用网站三 油猴脚本编写介绍1 添加新脚本2 油猴脚本注释内容解释3 编写油猴脚本的基本步骤4 油猴脚本调试测试 四 hook之js逆向案例1 hook之window属性案例2 hook之cookie
  • js逆向案例-rus4逻辑学习

    目录 一 RS4特点二 网站请求流程特点三 网站加载js的顺序四 正式逻辑的研究1 cookie如何定位 xff1f 2 扣函数缺啥补啥注意事项 xff1f 3 如何获取 96 ts动态变量 96 值 xff1f 4 如何定位 96 MmE
  • js逆向案例-初学signature

    一 反爬点 案例网址 xff0c 向下滚动加载页面时的请求参数反爬signature xff0c 明显的特征 xff1a acrawler js以及window jsvmprt 34 二 反爬分析 参考文章1 xff0c 参考文章2 xff
  • Android逆向基础入门

    目录 一 基础App数据抓取1 App常用抓包工具2 fiddler抓包工具3 mitmdump抓包工具4 charles抓包工具5 uiautomatorviewer appium自动化工具6 Airtest自动化工具 二 js逆向与ap
  • 自动化测试工具-Airtest

    目录 一 Airtest介绍与安装二 Airtest基于图像识别自动控制手机App流程三 Airtest基于Poco的UI组件自动化控制App流程四 Airtest实现手机群控操作 一 Airtest介绍与安装 主要介绍区别 xff0c 以
  • Docker桌面版安装与使用(windows)

    目录 一 Docker概念二 下载安装三 docker镜像安装与操作四 制作自己的python镜像容器五 目录挂载六 多容器通信七 Docker Compose管理多个容器运行八 发布和部署九 备份数据迁移 一 Docker概念 1 Doc
  • Gradio 机器学习和数据科学开源 Python 库

    Gradio是一个开源的 Python 库 xff0c MIT的开源项目 xff0c 用于构建机器学习和数据科学演示和 Web 应用 Gradio的定位类似于Streamlit xff0c 但是更轻量 xff0c 因为它推荐的应用场景都是对
  • k8s安装

    目录 一 K8s概念二 minikube安装三 部署应用到集群中四 Service五 k8s部署爬虫1 意义 一 K8s概念 参考文章 xff0c 参考视频它是一个为 容器化 应用提供集群部署和管理的开源工具 xff0c 由 Google
  • 编程工具-GPT来AI编程代码

    一 安装介绍 1 https www cursor so 下载安装 xff0c 重要的说三遍 xff08 目前免费 xff01 免费 xff01 免费 xff01 xff09 xff0c 支持多平台 Mac Windows Linux xf
  • 某wipo专利_六宫格/cookie/css

    这里写目录标题 一 案例分析二 六宫格验证码三 列表页搜索式302四 详情页css链接cookie刷新 一 案例分析 案例网址 xff1a 案例网址 反爬点 xff1a 六宫格验证码 cookie反爬 时间强制等待 session数据强绑定
  • Python之urlencode()使用

    urlencode 传入参数类型 xff1a 字典功能 xff1a 将存入的字典参数编码为URL查询字符串 xff0c 即转换成以key1 61 value1 amp key2 61 value2的形式导入 xff1a from urlli
  • Python之Md5使用等加密

    目录 一 Python之md5使用二 Python之sha1使用三 Python之base64使用四 Python之rsa使用五 Python之aes des 一 Python之md5使用 功能 xff1a MD5签名是一个哈希函数 xff