#!/usr/bin/python3
import base64
import json
import jsonpath
import requests
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
from base64 import b64decode, b64encode
def get_public_key():
"""
备注:加密方式为rsa加密,先获取public_key
:return str
"""
url = "http://ip/publicKey" #获取公钥
response = requests.request("GET", url).text
res = json.loads(response)
_public_key = jsonpath.jsonpath(res, "$..data.publicKey")
return _public_key[0]
def str_to_rsa(text: str):
""""
明文rsa加密
:return:str
"""
_public_key = get_public_key()
__public_key = b64decode(_public_key)
rsa_key = RSA.importKey(__public_key)
cipher = Cipher_pkcs1_v1_5.new(rsa_key) # 创建用于执行pkcs1_v1_5加密或解密的密码
cipher_text = base64.b64encode(cipher.encrypt(text.encode('utf-8')))
_cipher_text = cipher_text.decode('utf-8')
return _cipher_text
if __name__ =="__main__":
_public_key = get_public_key()
# print(_public_key)
passwd = "Hello123$"
txt = str_to_rsa(passwd)
print(txt)
PS: 需要注意在安装Crypto库的时候,可能会安装上了无法使用,原因可能是依赖的安装的文件夹与包名名称不一致导致,修改文件夹与名称一致即可
RSA算法是一种非对称加密算法,它使用一对密钥进行加密和解密。公钥用于加密信息,私钥用于解密信息
RSA算法具有以下优点:
- 加密强度高,安全性好。
- 加密和解密速度快。
- 支持数字签名。
RSA算法也存在以下缺点:
- 密钥长度较长,需要较大的存储空间和计算资源。
- 对明文的长度有限制。