Python实现数据加密-解密

315 篇文章 4 订阅
183 篇文章 5 订阅

Python实现数据加密-解密


运行环境:

OS:macOS Monterey Version 12.3.1(英文版)

IDE:PyCharm 2020.1

1 . PyCryptodome库安装

​ PyCryptodome是Python中一种强大的加密算法库,可以实现常见的单向加密、对称加密、非对称加密和流加密算法。目前该库函数支持Python 2和Python 3两种不同版本。安装方式也极其简单,以pip方式进行安装。安装过程如下:

Linux环境:

(venv) (base) liuxiaowei@MacBookAir 漏洞检测与防御 % sudo pip3 install -i https://pypi.douban.com/simple pycryptodome

结果如下图:

Windows环境:

C:\cmder
λ pip3 install -i https://pypi.douban.com/simple pycryptodomex

结果如下图:

2. Python实现Base64编/解码

严格意义上讲,Base64编码算法并不算是加密算法,Base64编码只是将数据转码,而且转码的规则是公开的。

2.1 Base64编码方式

示例代码如下:

import base64
s = 'ms08067'
bs = base64.b64encode(s.encode('utf-8'))
print(bs)

结果如下:

b'bXMwODA2Nw=='
2.2 Base64解码方式

示例代码如下:


import base64
bs = 'bXMwODA2Nw=='
bbs = str(base64.b64decode(bs), 'utf-8')
print(bbs)

结果如下:

ms08067

3. Python实现DES加解密

3.1 DES加密

示例代码如下:

from Cryptodome.Cipher import DES
import binascii

key = b'abcdefgh'                # key的长度约为8字节
des = DES.new(key, DES.MODE_ECB) # ECB模式
text = 'ms08067.com'
text = text + (8 - (len(text) % 8)) * '='
encrypt_text = des.encrypt(text.encode())
encryptResult = binascii.b2a_hex(encrypt_text)  # b2a_hex
print(text)
print(encryptResult)

结果如下:

ms08067.com=====
b'b81fcb047936afb76487dda463334767'
3.2 DES解密

示例代码如下:

from Cryptodome.Cipher import DES
import binascii

key = b'abcdefgh'         # key的长度必须为8字节
des = DES.new(key, DES.MODE_ECB)   # ECB模式
encryptResult = b'b81fcb047936afb76487dda463334767'
encrypto_text = binascii.a2b_hex(encryptResult)   #a2b_hex
decryptResult = des.decrypt(encrypto_text)
print(decryptResult)

结果如下:

b'ms08067.com====='

4. Python实现AES加解密

4.1 AES加密

示例代码如下:

from Cryptodome.Cipher import AES
import binascii
key = b'abcdefghabcdefgh'  # key 的长度必须为8字节
text = 'baidu.com'   # 被加密的数据需要为8字节的倍数

text = text +(16- len(text) % 16) * '='
aes = AES.new(key, AES.MODE_ECB)      # ECB模式
encrypto_text =aes.encrypt(text.encode())
encryptResult = binascii.b2a_hex(encrypto_text)  # b2a_hex
print(text)
print(encryptResult)

结果如下:

baidu.com=======
b'7838f1b0f8d26e5c563778670fd0d6e0'
4.2 AES解密

示例代码如下:

from Cryptodome.Cipher import AES
import binascii

key = b'abcdefghabcdefgh'  # key 的长度必须为8字节
encryptResult = b'7838f1b0f8d26e5c563778670fd0d6e0'
aes = AES.new(key, AES.MODE_ECB)    # ECB模式
encrypto_text = binascii.a2b_hex(encryptResult)  # a2b_hex
decryptResult = aes.decrypt(encrypto_text)
print(decryptResult)

结果如下:

b'baidu.com======='

5. Python实现MD5加密

示例代码如下:

from hashlib import md5

def encrypt_md5(s):
    new_md5 = md5()   # 创建md5对象
    new_md5.update(s.encode(encoding='utf-8'))
    # 返回信息摘要
    return  new_md5.hexdigest()

if __name__ == '__main__':
    print(encrypt_md5('ms08067.com'))

结果如下:

0961f18e7a720a53797aa038c9c643d1

通过在线工具验证,如下图:

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruce_Liuxiaowei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值