import base64
import os
import rsa
# 生成公钥 私钥
# publicKey, privateKey = rsa.newkeys(1024)
# print(publicKey)
# print(privateKey)
#
#
# # 转换为pem格式
# publicKeyStr = publicKey.save_pkcs1()
# privateKeyStr = privateKey.save_pkcs1()
# print(publicKeyStr)
# print(privateKeyStr)
# with open('public.pem', mode='wb') as f:
# f.write(publicKeyStr)
# with open('private.pem', mode='wb') as f:
# f.write(privateKeyStr)
keyLength = 1024
encryptBytesLength = int(keyLength / 8 - 11)
decryptBytesLength = int(keyLength / 8)
def getKey(path):
key = ''
with open(path, 'rb') as f:
key = f.read()
return key
curDir = os.path.dirname(os.path.abspath(__file__))
publicKeyStr = getKey(os.path.join(curDir, 'public.pem'))
privateKeyStr = getKey(os.path.join(curDir, 'private.pem'))
publicKey = rsa.PublicKey.load_pkcs1(publicKeyStr)
privateKey = rsa.PrivateKey.load_pkcs1(privateKeyStr)
class RSA:
@staticmethod
def encrypt(msg):
msgBytes = msg.encode()
encryptdMsg = b''
chunkSize = len(msgBytes) // encryptBytesLength + 1
for chunkIndex in range(chunkSize + 1):
chunk = msgBytes[chunkIndex * encryptBytesLength: (chunkIndex + 1) * encryptBytesLength]
encryptdMsg += rsa.encrypt(chunk, publicKey)
encryptdMsgStr = base64.b64encode(encryptdMsg).decode()
return encryptdMsgStr
@staticmethod
def decrypt(encryptdMsgStr):
encryptdMsg = base64.b64decode(encryptdMsgStr.encode())
chunkSize = len(encryptdMsg) // decryptBytesLength
msgBytes = b''
for chunkIndex in range(chunkSize):
chunk = encryptdMsg[chunkIndex * decryptBytesLength: (chunkIndex + 1) * decryptBytesLength]
msgBytes += rsa.decrypt(chunk, privateKey)
return msgBytes.decode()
encryptMsg = RSA.encrypt('你好吗')
print(encryptMsg)
decryptMsg = RSA.decrypt(encryptMsg)
print(decryptMsg)
python RSA加密解密
最新推荐文章于 2023-09-12 09:21:33 发布