python 常见加密算法使用

1、对称加密算法(AES、DES、3DES)
对称加密算法是指加密和解密采用相同的密钥,是可逆的(即可解密)。
AES数学原理详解

AES加密解密简例:

from Crypto.Cipher import AES
key = b'1234567812345678' #秘钥
text = b'abcdefghijklmnhi' #需要加密的内容,bytes类型
aes = AES.new(key,AES.MODE_ECB) #ECB模式
en_text = aes.encrypt(text) #加密
print("密文:",en_text)
den_text = aes.decrypt(en_text) # 解密
print("明文:",den_text)

DES加密解密简例:

import pyDes,base64
key = b'1234567812345678' #秘钥
text = b'abcdefghijklmnhi' #需要加密的内容,bytes类型
des = pyDes.des(key, pyDes.CBC, key, pad=None, padmode=pyDes.PAD_PKCS5) 
ecryptdata = des.encrypt(text) # 加密
en_text = bytes.decode(base64.b64encode(ecryptdata))
print("密文:",en_text)
data = des.decrypt(base64.b64decode(en_text)) # 解密
den_text = bytes.decode(data) 
print("明文:",den_text)

2、非对称加密算法(RSA、DSA、ECC)
非对称加密算法是指加密和解密采用不同的密钥(公钥和私钥),因此非对称加密也叫公钥加密,是可逆的(即可解密)。公钥密码体制根据其所依据的难题一般分为三类:大素数分解问题类、离散对数问题类、椭圆曲线类。

RSA 加解密简例:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: gxq
# @time : 2022/9/21 16:22
import base64
from Crypto import Random
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as PKCS1_cipher  

random_generator = Random.new().read  # 生成随机偏移量
rsa = RSA.generate(2048, random_generator)  # 生成一个私钥
private_key = rsa.exportKey()  # 导出私钥
public_key = rsa.publickey().exportKey()  # 生成私钥所对应的公钥

def encrypt_data(msg):
    cipher = PKCS1_cipher.new(public_key)  # 生成一个加密的类
    encrypt_text = base64.b64encode(cipher.encrypt(msg.encode()))  # 对数据进行加密
    return encrypt_text.decode()  # 对文本进行解码码

def decrypt_data(encrypt_msg):
    cipher = PKCS1_cipher.new(private_key)  # 生成一个解密的类
    back_text = cipher.decrypt(base64.b64decode(encrypt_msg), 0)  # 进行解密
    return back_text.decode()  # 对文本内容进行解码

msg = "A.L.Kun"
encrypt_text = encrypt_data(msg)  # 加密
decrypt_text = decrypt_data(encrypt_text)  # 解密
print(decrypt_text, encrypt_text)

3、线性散列(HASH)算法(MD5、SHA1、HMAC)
MD5全称是Message-Digest Algorithm 5(信息摘要算法5),单向的算法不可逆(被MD5加密的数据不能被解密)。MD5加密后的数据长度要比加密数据小的多,且长度固定,且加密后的串是唯一的。
SHA-1摘要比MD5摘要长32 位,所以SHA-1对强行攻击有更大的强度,比MD5更安全。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操作,而对SHA-1则是2160数量级的操作。

MD5加密简例:

import hashlib
 
password='abc123'
SALE = password[:4]   #取密码的前4位
md = hashlib.md5(password.encode())
print(md.hexdigest()) # 单纯的MD5加密
md_sale = hashlib.md5((password+SALE).encode())  # MD5加盐加密
# md5加盐可以将盐拼接在原密码后,也可以使用jion将盐穿插在原密码间
str(password).join(SALE)  # 将password整体插入SALE的每个元素之间。
print(str(password)+SALE)
md5salepwd = md_sale.hexdigest()
print('加密后为:',md5salepwd)

SHA1加密算法:

import hashlib
 
str = "中国你好"
a = hashlib.sha1(str.encode("utf-8")).hexdigest()
print("sha1加密前后 :",a)

4、混合加密
几种加密算法混合使用。

你可能感兴趣的:(python,开发语言)