Python实现各种加密算法 - 接口加解密其实很简单!
大家好,我是高哥!今天给大家带来一个实用的主题 - Python中的加密算法实现。在开发中,特别是和接口打交道的时候,经常会遇到各种加密解密的需求。不少小伙伴觉得这个很难,其实掌握了要领就很简单。今天我就用最通俗的语言,带大家轻松搞定这个话题!
## 1. 最常用的几种加密方式
### 1.1 Base64编码
虽然严格来说Base64不算是加密,但它是最基础也是最常用的编码方式:
```python
import base64
# 编码
text = “高哥带你学Python”
encoded = base64.b64encode(text.encode()).decode()
print(f“编码后: {encoded}”)
# 解码
decoded = base64.b64decode(encoded).decode()
print(f“解码后: {decoded}”)
1.2 MD5加密
MD5是最常见的哈希算法之一,特点是单向加密,无法解密:
import hashlib
def get_md5(text):
md5 = hashlib.md5()
md5.update(text.encode())
return md5.hexdigest()
password = “123456”
print(f“MD5加密后: {get_md5(password)}”)
1.3 AES加密
AES是对称加密算法的典范,既可以加密也可以解密:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
class AESCipher:
def __init__(self, key):
self.key = key.encode()[:16].ljust(16, b' ')
def encrypt(self, raw):
cipher = AES.new(self.key, AES.MODE_ECB)
return base64.b64encode(cipher.encrypt(pad(raw.encode(), 16)))
def decrypt(self, enc):
cipher = AES.new(self.key, AES.MODE_ECB)
return unpad(cipher.decrypt(base64.b64decode(enc)), 16).decode()
# 使用示例
aes = AESCipher(“my_secret_key”)
encrypted = aes.encrypt(“高哥的秘密数据”)
print(f“加密后: {encrypted}”)
decrypted = aes.decrypt(encrypted)
print(f“解密后: {decrypted}”)
2. 接口加密实战
很多小伙伴在对接第三方接口时,经常遇到各种加密参数。下面是一个真实的例子:
import time
import hashlib
import requests
def generate_sign(params, app_secret):
# 1. 参数排序
sorted_params = sorted(params.items())
# 2. 拼接字符串
sign_str = '&'.join([f“{k}={v}” for k, v in sorted_params])
# 3. 加上密钥
sign_str += app_secret
# 4. MD5加密
return hashlib.md5(sign_str.encode()).hexdigest()
def call_api():
# 接口参数
params = {
'app_id': 'your_app_id',
'timestamp': str(int(time.time())),
'data': '{“name”: “高哥”}'
}
# 生成签名
app_secret = 'your_app_secret'
params['sign'] = generate_sign(params, app_secret)
# 发送请求
return response.json()
3. 小贴士
密钥管理: 永远不要把密钥直接写在代码里,建议使用配置文件或环境变量
安全性考虑: MD5虽然常用,但安全性不高,建议使用SHA256等更安全的算法
编码问题: 在处理中文时,要特别注意编码问题,建议统一使用UTF-8
4. 实战练习题
尝试给一个字符串先进行Base64编码,再进行MD5加密
实现一个简单的JWT令牌生成和验证功能
给AES加密添加IV(初始化向量)提高安全性
小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问高哥哦。祝大家学习愉快,Python学习节节高!
python学习 #加密算法 #接口开发
Would you like me to explain or break down an
领取专属 10元无门槛券
私享最新 技术干货