0
点赞
收藏
分享

微信扫一扫

python-MD5加密和RAS加密

钟罗敏 2023-03-08 阅读 61

1.MD5加密

import hashlib  #导入hashlib库,内置库不需要安装
def get_md5_data(pwd:str,salt=''):
"""
:param pwd: 加密的字符串
:param salt: 盐值,缺省值,可以传,也可以不传,不传默认的空
:return: 返回加密后的结果
"""
#1-创建md5实例
md5 = hashlib.md5()
#2-调用加密方法
pwd = pwd + salt # 拼接盐值
md5.update(pwd.encode('utf-8'))
return md5.hexdigest() #加密后的结果---转成16进制
if __name__ == '__main__':
res = get_md5_data("ceshi")
print(res)

登录调用MD5

import requests
from handle_data import get_md5_data
HOST = 'http://121.41.14.39:3333' #环境
def loging(data): #函数定义的参数---形参
#1url
url = f'{HOST}/account/sLogin'
#2请求体数据
data['password'] = get_md5_data(data['password'])
payload = data
#3,请求头不一定需要
#4.发送请求
resp = requests.post(url,data=payload)
#5-打印响应体---字符串数据
print(resp.text)
# 6-打印响应体--字典类型返回--前提这个响应数据一定得是json格式
if __name__ == '__main__': # 一般适合本模块的调试
test_data = {'username':'yp0908','password':'admin123456'}
loging(test_data)

2.RSA加密

"""
参数:
username 账号
password: RSA加密的结果
1- xintian通过md5加密成密文--a
2- 使用RSA的公钥加密(a)
sign 签名
md5(username+password密文)
加密库安装:
# pip install pycryptodemo 或者 pip install pypcrytodemo -i https://douban.com/simplie 第三方库
"""

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as PKCS1_cipher
import base64
class RSAendecrypt:
def __init__(self,file_path='./'):
self.file_path = file_path
#1-创建秘钥对,公钥 私钥
#2-加密操作
def encrypt(self,crypt_data):
#1-打开读取这个公钥文件
with open(self.file_path+'public.pem') as fo:
key = fo.read() #2读取内容---字符串类型
public_key = RSA.importKey(key) #RSA里面importkey---变成公钥
cipher = PKCS1_cipher.new(public_key) #生成对象
# 转换编码,然后转换成字节,然后加密,然后还需要转换成base64
rsa_text = base64.b64encode(cipher.encrypt(bytes(crypt_data.encode('utf-8')))) #加密
return rsa_text.decode('utf-8') #解码

登录调用RSA

import requests
from handle_data import get_md5_data,RSAendecrypt

HOST = 'http://121.41.14.39:4567' #环境
def loging(data): #函数定义的参数---形参
#1url
url = f'{HOST}/account/loginRsa'
#2请求体数据
#-------------------------------------------------------
#1-md5加密密文
pwd_md5_text = get_md5_data(data['password'])
#2-rsa加密
rsa = RSAendecrypt()#实例化操作
pwd_rsa_text = rsa.encrypt(pwd_md5_text)
#3-更新到data
data['password'] = pwd_rsa_text
#4-增加sing签名
data.update({'sign':get_md5_data(data['username']+pwd_rsa_text)})
# -------------------------------------------------------
#3,请求头不一定需要
#4.发送请求
resp = requests.post(url,data=data)
#5-打印响应体---字符串数据
print(resp.text)

if __name__ == '__main__': # 一般适合本模块的调试
test_data = {'username':'yp0908','password':'admin123456'}
loging(test_data)














举报

相关推荐

0 条评论