还不会python 实现常用的数据编码和对称加密?看这篇文章就够啦~

python加密算法及hashlib 库 加密算法的分类: 以算法是否可逆: 可逆算法 是否使用同一个密码 对称加密 解密加密的密钥是一个 不对称加密 解密加密的密钥是同一对密钥 不可逆算法(hash算法) 不可逆的 hmac ... 阅读详情

相信很多使用 python 的小伙伴在工作中都遇到过,对数据进行相关编码或加密的需求,今天这篇文章主要给大家介绍对于一些常用的数据编码和数据加密的方式,如何使用 python 去实现。话不多说,接下来直接进入主题:

1、base64 编码

什么是 Base64 编码?
Base64 就是一种基于 64 个可打印字符来表示二进制数据的方法

在 python 中对数据进行 base64 编码可以使用 base64 这个官方库

案例:
import base64


data= "musen"


# base编码
data = data.encode()
res = base64.b64encode(data)
print(res)


# base64解码
res2 = base64.b64decode(res)
print(res2)

2、常见的哈希算法:

hash算法有很多:比如MD4、MD5、SHA-1 , SHA-224, SHA-256, SHA-384 和 SHA-5等等。其中MD5是比较常见的一种,也称之为MD5加密。

什么是 MD5 加密?
MD5(Message Digest Algorithm 5),是一种哈希算法,是不可逆的,即通过 md5 加密之后没办法得到原文,没有解密算法

python 中有一个叫做 hashlib 的官方库,对于一些常见的哈希算法这个库都实现了,咱们在工作中如果要使用 MD5 加密,直接使用 hashlib 这个库就可以实现。

案例
from hashlib import md5


def encrypt_md5(data):
    """md5加密"""
    # 创建md5对象
    new_md5 = md5()
    new_md5.update(data.encode('utf-8'))
    res = new_md5.hexdigest()
    # 加密
    return res

3、DES 加密

什么是对称加密?
对称加密指的的加密和解密用同一个秘钥进行加解密的加密方式。

什么是 EDS 加密?
des 对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时 , 必须共同持相同的密码。

在 python 中有一个叫做 pyDes 的第三方库可以用来实现 DES 加密,使用之前需要先通过 pip 命令安装:pip install pyDes

案例:
from pyDes import des, CBC, PAD_PKCS5
import binascii


def des_encrypt(s, KEY):
    secret_key = KEY
    iv = secret_key
    k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
    en = k.encrypt(s, padmode=PAD_PKCS5)
    return binascii.b2a_hex(en).decode()


def des_descrypt(s, KEY):
    secret_key = KEY
    iv = secret_key
    k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
    de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)
    return de.decode()


if __name__ == '__main__':
    # 秘钥
    KEY = 'mHAxsLtt'
    # 加密
    res = des_encrypt("python666", KEY)
    print(res)
  # 解密
    res2 = des_descrypt(res, KEY)
    print(res2)

4、3DES 加密

什么是 3DES 加密?
3DES(或称为 Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次 DES 加密算法

python 中实现 3DES 加密可以使用,pyDes 这个模块去实现

案例:
import base64
import hashlib


import pyDes




def encrypt_3des(data):
    key = "U8NjHq1ZP10="
    hash_md5 = hashlib.md5()
    hash_md5.update(key.encode(encoding='UTF-8'))
    key = hash_md5.hexdigest()
    iv = key[0:8]
    key2 = key[0:24]
    k = pyDes.triple_des(key2, pyDes.CBC, IV=iv, pad=None, padmode=pyDes.PAD_PKCS5)
    d = k.encrypt(data.encode())
    d = base64.b64encode(d)
    return d.decode()




def descrypt_3des(data):
    key = "U8NjHq1ZP10="
    hash_md5 = hashlib.md5()
    hash_md5.update(key.encode(encoding='UTF-8'))
    key = hash_md5.hexdigest()
    iv = key[0:8]
    key2 = key[0:24]
    k = pyDes.triple_des(key2, pyDes.CBC, IV=iv, pad=None, padmode=pyDes.PAD_PKCS5)
    data = base64.b64decode(data)
    d = k.decrypt(data)
    return d.decode()




if __name__ == '__main__':
    res = encrypt_3des('lemonban')
    print(res)
    res2 = descrypt_3des(res)
    print(res2)

5、AES 加密

什么是 AES 加密?
AES 也是一种对称加密。它是用来替代之前的 DES 的,安全性更高。目前已经被多方分析且广为全世界所使用,并在 2002 年 5 月 26 日成为有效的标准 ,

关于 python 中实现 Aes 加密的库很多,大家可以去 pypi 上自行下载安装,下面案例用的是 Crypto 这个库

案例
import base64
from Crypto.Cipher import AES




class AesEncrypt:
    # 密钥
    key = '0CoJUm6Qyw8W8jud'
    # 偏移量
    vi = '0102030405060708'


    def encrypt(self, data):
        """加密"""
        data = data.encode('utf8')
        data = (lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16).encode('utf-8'))(data)
        cipher = AES.new(self.key.encode('utf8'), AES.MODE_CBC, self.vi.encode('utf8'))
        encryptedbytes = cipher.encrypt(data)
        encodestrs = base64.b64encode(encryptedbytes)
        enctext = encodestrs.decode('utf8')
        return enctext


    def decrypt(self, data):
        """解密"""
        data = data.encode('utf8')
        encodebytes = base64.decodebytes(data)
        cipher = AES.new(self.key.encode('utf8'), AES.MODE_CBC, self.vi.encode('utf8'))
        text_decrypted = cipher.decrypt(encodebytes)
        unpad = lambda s: s[0:-s[-1]]
        text_decrypted = unpad(text_decrypted)
        text_decrypted = text_decrypted.decode('utf8')
        return text_decrypted




if __name__ == '__main__':
    # 注意点:加密数据中有中文的时候,会有问题
    data = "musen123"
    aes = AesEncrypt()
    # 加密
    enctext = aes.encrypt(data)
    print(enctext)
    # # 解密
    text_decrypted = aes.decrypt(enctext)
    print(text_decrypted)

 

工业激光器核心参数详解与选型实战:从理论到产线落地(五) 本文深入解析了脉冲激光加工的三大核心参数——脉宽、重复频率脉冲能量的协同作用机制。通过公式推导产线案例,揭示了参数设置对加工良率的关键影响:1. 脉宽决定热影响区大小,缩短脉宽可显著提升加工精度;2. 重复频率影响加工速度热积累效应,需平衡效率与质量;3. 脉冲能量决定材料去除量,过大易导致加工缺陷。文中以ABS塑料打标、模具清洗微孔钻孔为例,展示了参数优化如何将良率从65%提升至99%,并提供了不同应用场景的参数选型表调试技巧,强调峰值功率比平均功率更具决定性作用。 阅读详情

相关推荐

DCNv4+YOLOv8:2024最新可变形卷积赋能目标检测,从原理到实战的科研级优化指南

从理解DCNv4“自适应变形卷积核”的核心思想,到亲手将其嵌入YOLOv8并验证在复杂场景的检测效果,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解目标检测中“特征自适应提取”的核心价值。现在就开始行动,相信你会在目标检测的“自适应特征提取”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入DCNv4后,YOLOv8在复杂场景下的检测精度提升3-5个百分点,尤其是小目标遮挡目标的AP提升更为明显,而推理速度仅下降5%-10%(可通过模型量化进一步优化)。2024年最新推出的。

m0_64661770的博客 247

PyDes中pad mode简单研究

pad mode主要是填充模式,一般是按照8 bytes的数据block长度,在data长度不足block长度或倍数的时候给你补齐。 举个例子: #use DES cipher from pyDes import CBC,des,PAD_PKCS5,PAD_NORMAL import binascii key = "1234567812345678" key = bytearray.fromhex...

Benjamin_Xu的专栏 1641

多功能数字钟(基于Multisim14.0实现)带报告

总体设计介绍:(1)通过555定时器构成的多谐振荡器产生秒脉冲。(2)分,秒计时电路采用60进制计数器。0~59循环计数。(3)小时计时电路采用24进制计数器,0~24循环计数。(4)具有闹钟系统,当闹钟显示部分与时间显示相同时,蜂鸣器发声。(5)具有万年历系统,可根据平年,闰年,大月,小月显示时间。平年2月28天,闰年2月29天,大月31天,小月30天。(6)总体电路图:

python常见加密方式总结&踩坑小贴士

本文是向大家介绍python中常见的一些加密方式,在使用python的时候遇到数据加密的情况时,可以根据实际场景来选择加密的方式对数据进行加密,加强数据传输的安全性。

weixin_43805705的博客 3736

网络安全&密码学—python中的各种加密算法

数据加密是一种保护数据安全的技术,通过将数据(明文)转换为不易被未经授权的人理解的形式(密文),以防止数据泄露、篡改或滥用。加密后的数据(密文)可以通过解密过程恢复成原始数据(明文)。数据加密的核心是密码学,它是研究密码系统或通信安全的一门学科,包括密码编码密码分析学。在网络安全密码学领域,数据加密是保护数据机密性、完整性可用性的关键技术。Python作为一种功能强大的编程语言,提供了多种实现数据加密解密的方法。

xt350488的博客 3017

一个只使用了hashlibbase64的对称加密实现

Python的加密算法实现起来不复杂,但是有时,现场环境可能无法挂载AES, DEC这类模块,这里有一个简化的实现,利用hash, xor实现对称加密。它的最终输出加密字符串比较大,至少有32*2*2个字节。

含光左卫的工作笔记集 217

一文读懂,python实现常用数据编码对称加密

相信很多使用 python 的小伙伴在工作中都遇到过,对数据进行相关编码或加密的需求,今天这篇文章主要给大家介绍对于一些常用数据编码数据加密的方式,如何使用 python实现

伤心的辣条 1626

python重构之DES加密

DES重构

qq_51179608的博客 644

py实现DES加解密详解

一、安装pyDes库 下载点这里 安装 使用Python包管理器: $ pip安装pydes 或者,用于手动安装 从下载的档案中提取文件并运行: $ python setup.py安装 要测试,请运行: $ python test_pydes.py 用法 python -c“ import pyDes; des = pyDes.des('This Key'); print des.encr...

qq_42404383的博客 4505

python能加密吗_pyDes实现python的des加密

如需要在python中使用des加密,可以直接使用pyDes库加密,该库提供了CBCECB两种加密方式。1、Windows下安装下载后pyDes-x.x.x.zip并解压后,里面有setup.py文件,使用命令 setup.py --help可查看详细使用。你可以使用命令 python setup.py install 命令安装,也可以直接将压缩包内的pyDes.py拷贝到本地的python l...

weixin_39704066的博客 282

三种填充模式的区别(PKCS7Padding/PKCS5Padding/ZeroPadding)

AES 作为块加密算法(block cipher),要求被加密数据具有固定的大小,比如16 字节。那么对于一段任意大小的明文,对最后一个块补全到 16 字节就是一个必要的过程。以及在解密时将 padding 字节删除。 那么这里的关键问题便是如何设计这个 padding 方法,使解密后能够只通过明文便可以精准的切掉小尾巴。 容易发现,任何魔法字节都是不可靠的,即 pad 自身必须包含明确的描述 p...

天道酬勤 4万+

3des加密中- pkcs#5pkcs#7填充的区别

pkcs#5pkcs#7填充的区别 最近做到了关于加密解密的部分。 使用算法AES的时候,涉及到数据填充的部分,数据的填充有很多种方案,用的比较多的有pkcs#5,pkcs#7, 下面的都是从网上转来的。结论就是在AES 的使用中,pkcs#5填充pkcs#7填充没有任何区别。   PKCS #7 填充字符串由一个字节序列组成,每个字节填充该填充字节序列的长度。 假定块长

no pay no gay 1万+
上一篇: hadoop+hbase+zookeeper安装指南
下一篇: Allure在自动化测试中的应用
软件测试小小白
博客等级 码龄5年 98粉丝 184原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值