Python MD5加密的三种方法(可加盐)/base64加解密 /RSA加解密




import hashlib
import base64
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
import rsa
 
# MD5加密
def md5_encryption(data):
    md5 = hashlib.md5()
    md5.update(data.encode('utf-8'))
    return md5.hexdigest()
 
# MD5加盐加密
def md5_salt_encryption(data, salt):
    md5 = hashlib.md5(salt.encode('utf-8'))
    md5.update(data.encode('utf-8'))
    return md5.hexdigest()
 
# 使用base64进行加密解密
def base64_encryption(data):
    return base64.b64encode(data.encode('utf-8')).decode('utf-8')
 
def base64_decryption(data):
    return base64.b64decode(data.encode('utf-8')).decode('utf-8')
 
# AES加密解密
def aes_encryption(data, key):
    pad = AES.block_size - len(data) % AES.block_size
    data = data + pad * chr(pad)
    iv = get_random_bytes(AES.block_size)
    cipher = AES.new(key, AES.MODE_CFB, iv)
    return iv + cipher.encrypt(data)
 
def aes_decryption(data, key):
    iv = data[:AES.block_size]
    cipher = AES.new(key, AES.MODE_CFB, iv)
    return cipher.decrypt(data[AES.block_size:]).rstrip(chr(AES.block_size))
 
# RSA加密解密
def rsa_encryption(data, pub_key):
    return rsa.encrypt(data.encode('utf-8'), pub_key)
 
def rsa_decryption(data, priv_key):
    return rsa.decrypt(data, priv_key).decode('utf-8')
 
# 生成RSA密钥对
def generate_rsa_keys():
    (pub_key, priv_key) = rsa.newkeys(1024)
    return (pub_key, priv_key)
 
# 示例
if __name__ == '__main__':
    data = 'Hello, World!'
    salt = 'secret_salt'
    key = b'1234567890123456'
    pub_key, priv_key = generate_rsa_keys()
 
    print('MD5加密:', md5_encryption(data))
    print('MD5加盐加密:', md5_salt_encryption(data, salt))
    print('Base64加密:', base64_encryption(data))
    print('Base64解密:', base64_decryption(base64_encryption(data)))
    print('AES加密:', aes_encryption(data, key))
    print('AES解密:', aes_decryption(aes_encryption(data, key), key))
    print('RSA加密:', rsa_encryption(data, pub_key))
    print('RSA解密:', rsa_decryption(rsa_encryption(data, pub_key), priv_key))

注意:

  1. 示例中使用的RSA加密需要安装rsa库,可以通过pip install rsa进行安装。
  2. AES加密需要安装pycryptodome库,可以通过pip install pycryptodome进行安装。
  3. 示例中的密钥和盐仅为示例使用,实际应用中需要使用强随机密钥和盐。
  4. 示例中的AES加密模式(CFB)和块大小(128)可能需要根据实际需求进行调整。
最后修改于:2024年08月16日 10:28

评论已关闭

推荐阅读

Vue中使用mind-map实现在线思维导图
2024年08月04日
VUE
Web前端最全Vue实现免密登录跳转的方式_vue怎么样不登录返回首页,最强技术实现
2024年08月04日
VUE
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)
2024年08月04日
VUE
Vue-颜色选择器实现方案——>Vue-Color( 实战*1+ Demo*7)
2024年08月04日
VUE
Vue项目卡顿慢加载?这些优化技巧告诉你!_vue数据多渲染卡顿
2024年08月04日
VUE
vue中的keep-alive详解与应用场景
2024年08月04日
VUE
Vue、React实现excel导出功能(三种实现方式保姆级讲解)
2024年08月04日
vue-office/docx插件实现docx文件预览
2024年08月04日
VUE
java调用js文件的两种方法(支持V8引擎)
2024年08月04日
JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js
2024年08月04日
两周从爬虫小白变大神 _yjs_js_security_passport
2024年08月04日
JS笔记(对象、函数、数组)
2024年08月04日
Markdown.js:强大的纯JavaScript Markdown解析器
2024年08月04日
Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。
2024年08月04日
vue 父组件怎么获取子组件里面的data数据
2024年08月04日
VUE
个人开发实现AI套壳网站快速搭建(Vue+elementUI+SpringBoot)
2024年08月04日
el-table 表格封装并改造实现单元格可编辑
2024年08月04日
none
nodejs环境下创建vue项目、SSH密钥登陆!!!
2024年08月04日
vue+quill+element-ui实现视频、图片上传及缩放保姆级教程,轻松使用富文本
2024年08月04日
【three.js】22. Imported Models导入模型
2024年08月04日