实现rsa加密且可外部访问
2018-10-30 本文已影响0人
LittleJessy
coding:utf-8
import json
from urlparse import parse_qs
from wsgiref.simple_server import make_server
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64
定义函数,参数是函数的两个参数,都是python本身定义的,默认就行了。
def application(environ, start_response):
# 定义文件请求的类型和当前请求成功的code
start_response('200 OK', [('Content-Type', 'text/html')])
# environ是当前请求的所有数据,包括Header和URL,body,这里只涉及到get
# 获取当前get请求的所有数据,返回是string类型
params = parse_qs(environ['QUERY_STRING'])
# 获取get中key为token的值
method = params.get('method', [''])[0]
data = params.get('token', [''])[0]
# 获取公钥数据
public_key_file = open('D:\\jsy_auto\\ghost-public.pem', 'r')
pub_key_str = public_key_file.read()
public_key_file.close()
pubobj = RSA.importKey(pub_key_str)
pubobj = PKCS1_v1_5.new(pubobj)
res = []
for i in range(0, len(data), 100):
res.append(pubobj.encrypt(data[i:i + 100]))
s = "".join(res)
cipher_text = base64.b64encode(s)
#组成一个数组,数组中只有一个字典
dic = {'method':method,'code': cipher_text}
return [json.dumps(dic)]
if name == "main":
port = 5088
httpd = make_server("0.0.0.0", port, application)
print "serving http on port {0}...".format(str(port))
httpd.serve_forever()
保存文件为rsa_number.py
启动服务:python rsa_number.py
本地访问: http://127.0.0.1:5088/?method=rsaNumber&token=15001032561
外部方式:http://10.107.11.80:5088/?method=rsaNumber&token=15001032561