代码示例:
# -*- coding: utf-8 -*-
import os
import sys
import base64
import traceback
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
from Crypto.Cipher import ARC4
priv_file = "priv.pem"
pub_file = "pub.pem"
# 根据文件获取RSA对象
def get_rsa_key_obj(key_file) :
key_obj = None
with open(key_file, "r") as f:
key_str = f.read()
key_obj = PKCS1_v1_5.new(RSA.importKey(key_str))
return key_obj
# 使用RSA公钥加密
def rsa_encrypt(key_obj, plaintext, length=100) :
try:
data_lst = []
for i in range(0, len(plaintext), length):
data_tmp = key_obj.encrypt(plaintext[i:i+length])
data_lst.append(data_tmp)
ciphertext = b"".join(data_lst)
msg_b64 = base64.b64encode(ciphertext)
return msg_b64
except Exception as e:
traceback.print_exc()
return None
# 使用RSA私钥解密
def rsa_decrypt3(key_obj, msg_b64, length=128) :
msg = base64.b64decode(msg_b64)
try:
data_lst = []
for i in range(0, len(msg), length):
data_tmp = key_obj.decrypt(msg[i:i+length],"")
data_lst.append(data_tmp)
plaintext = b''.join(data_lst)
return plaintext
except Exception :
traceback.print_exc()
return None
# rc4解密
def rc4_encrypt(msg,key):
cipher = ARC4.new(key)
ciphertext=cipher.encrypt(msg)
return base64.b64encode(ciphertext)
# rc4加密
def rc4_decrypt(msg,key):
cipher = ARC4.new(key)
ciphertext = base64.b64decode(msg)
return cipher.decrypt(ciphertext)
if __name__ == "__main__":
RSA_pub_key_obj = get_rsa_key_obj(pub_file)
RSA_priv_key_obj = get_rsa_key_obj(priv_file)
ret = rsa_encrypt(RSA_pub_key_obj, b"12345678")
print(ret)
print("length : "+str(len(ret)))
ret = rsa_decrypt3(RSA_priv_key_obj, ret)
print(ret)
print("length : "+str(len(ret)))
ret = rc4_encrypt(b"1234567890", b"abcde")
print(ret)
print("length : "+str(len(ret)))
ret = rc4_decrypt(ret, b"abcde")
print(ret)
print("length : "+str(len(ret)))
生成一个密钥对 priv.pem,并把公钥 pub.pem 从密钥对里提取出来。

测试:

发表回复