# coding=utf-8
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP, PKCS1_v1_5
import base64
from urllib import parse
import Crypto.Cipher.AES
import Crypto.Random
import os
import sys
from Crypto.Cipher import AES
from Crypto.Cipher import AES
from Crypto import Random
import binascii
import hashlib
def decrypt_data(fp,inputdata, code="123456"):
# URLDecode
data = parse.unquote(inputdata)
# base64decode
data = base64.b64decode(data)
private_key = RSA.import_key(open(fp+"/my_private_rsa_key.bin").read(),passphrase=code)
# 使用 PKCS1_v1_5,不要用 PKCS1_OAEP
# 使用 PKCS1_OAEP 的话,前端 jsencrypt.js 加密的数据解密不了
cipher_rsa = PKCS1_v1_5.new(private_key)
# 当解密失败,会返回 sentinel
sentinel = None
ret = cipher_rsa.decrypt(data, sentinel)
return ret
def encrypt_data(fp,content=b"123456"):
# 加载公钥
recipient_key = RSA.import_key(open(fp+"/my_rsa_public.pem").read())
cipher_rsa = PKCS1_v1_5.new(recipient_key)
en_data = cipher_rsa.encrypt(content)
c=base64.b64encode(en_data)
return c
fp="/".join(os.path.dirname(os.path.abspath(__file__)).split("/")[:-1])+"/lib"
en=encrypt_data(fp)
text = en.decode() # 待加密文本
print(text)
hash = hashlib.md5()
hash.update(text.encode('utf-8'))
print(hash.hexdigest())
print("*"*20)
#编码
encodestr = base64.b64encode(text.encode())
print(encodestr.decode())
#解码
decodestr = base64.b64decode(encodestr)
print(decodestr.decode())
print("*"*20)
print(decrypt_data(fp,"fhZf1TKEk2HiAG3BW/kuhuSXdCvSXzxW29re1OGgtQVUyO++l6KwxorpPQdZRGgu7E4muN5HyCBRBI6QTth+RGaNnlh/7DP8y3SmHjWyiYbXxAGCY5b8Vzog3IAqOZWF1QTrU7Azn+HoMe4MO4MXmH3uNXEi63nUMJlytcEpi14="))