【Python】使用python的tornado配合html页面示例
背景:java写的非标加密算法,测试时执行java工程进行解密测试,很不方便。
目的:想写个web页面,使得任何测试人员都可以在输入加密串时得到解密后字段,方便日志查询及字段核对。(额,算法部分就不写了。)
步骤:由于内部使用的是非标Base64加密算法,所以我该次操作分为3个部分,以下具体介绍并附带python代码
1 将java的非标加密算法转为python
2 使用python的tornado调用该算法
3 编写html页面,简单明了
一 java非标加密算法转为python dncrypte.py
#-*- coding:utf-8 -*-
import array
#该部分设置字符对应规则,后续解密部分使用它来做对应
BASE64CHAR=[****]
...
def dncryped(string):
#定义数组,用来存放解密后的字符,outlen为数组长度
outbyte=[0 for j in range(outlen)]
#解密规则及算法,得到解密后的outbyte数组
return ''.join(outbyte)
#print dncryped("FMK60hD") 测试部分
问题:python中提供的数据类型远少于java,但是它提供了转化功能。比如'ord'将字符对应到ascii码,'chr'将ascii码对应到字符,可在做位于时使用。返回是使用了''.join(outbyte),是因为outbyte中存储的ascii码,所以将其转化为对应的字符数组。
二 使用python的tornado调用该算法 test.py
# -*- coding:utf-8 -*-
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from dncrypte import * #引入自己的方法
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int) class IndexHandler(tornado.web.RequestHandler):
def get(self):
encry=self.get_argument('Encrypted', 'Hello')
Encrypted=dncryped(encry) #调用解密方法
self.write(Encrypted)
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
启动:python test.py --port=9999
访问:ip:9999,在url后添加?/Encrypted=加密串,enter即可得到解密结果,如下:

三 编写html页面 test.html&test.py
原本到第二步即可使用了,不过在url中输入加密串总是不太方便,于是想配合html5,做一个简单页面。达到如下效果:

1 新增一个文件 test.html
<form action="http://myip:8888/?Encrypted=" method="post">
请输入加密串:<input type="text" name="word" id="word" value="" />
<input type="submit" value="提交" />
</br>
<table class="table table-bordered table-condensed table-responsive">
{{result}}
</table>
</br>
</form>
2 需要改动原来的test.py
# -*- coding:utf-8 -*-
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from dncrypte import * #引入自己的方法
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int) class IndexHandler(tornado.web.RequestHandler):
def get(self):
result = ""
Encrypted = ""
self.render('test.html',**getlocals(locals()))
def post(self):
encry=self.get_argument('Encrypted', 'Hello')
result = dncryped(encry)
self.render('test.html',**getlocals(locals()))
def getlocals(locals):
tmpd={}
for k,v in locals.iteritems():
if k not in ['self']:
tmpd[k] = v
return tmpd
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
【Python】使用python的tornado配合html页面示例的更多相关文章
- python web框架之Tornado
说Tornado之前分享几个前端不错的网站: -- Bootstrap http://www.bootcss.com/ -- Font Awesome http://fontawesome.io/ - ...
- Python(九)Tornado web 框架
一.简介 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过 ...
- python web框架——初识tornado
一 Tornado概述 Tornado是FriendFeed使用的可扩展的非阻塞式web框架及其相关工具的开源版本.这个Web框架看起来有些像web.py或者Google的 webapp,不过为了能有 ...
- Python学习笔记17—Tornado
实例 #!/usr/bin/env Python #coding:utf-8 import tornado.httpserver import tornado.ioloop import tornad ...
- python爬爬爬之单网页html页面爬取
python爬爬爬之单网页html页面爬取 作者:vpoet mail:vpoet_sir@163.com 注:随意copy 不用告诉我 #coding:utf-8 import urllib2 Re ...
- Python+Selenium爬取动态加载页面(2)
注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...
- Python+Selenium爬取动态加载页面(1)
注: 最近有一小任务,需要收集水质和水雨信息,找了两个网站:国家地表水水质自动监测实时数据发布系统和全国水雨情网.由于这两个网站的数据都是动态加载出来的,所以我用了Selenium来完成我的数据获取. ...
- Awesome Python,Python的框架集合
Awesome Python A curated list of awesome Python frameworks, libraries and software. Inspired by awes ...
- 【python】Python 资源大全中文版
申明:感谢原作者的整理与分享,本篇文章分享自:https://www.jianshu.com/p/9c6ae64a1bd7 GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常 ...
随机推荐
- 【POJ2104】kth num
You are working for Macrohard company in data structures department. After failing your previous tas ...
- ExtJS4.2学习(四)Grid表格中文排序问题(转)
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/173.html --------------- ...
- jquery 数组和字典
1 数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...
- 【斜率DP】BZOJ 1010:玩具装箱
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 7537 Solved: 2888[Submit][St ...
- express 3.0.x 中默认不支持flash() 的解决方法
Express 3.x默认已经不支持req.flash(),如果要用flash()需要这样兼容 1.flash 消息暂存在session中,需要cookieParser 和 session中间件来声明 ...
- Firefox Security Toolkit 安装
目的: 下载Firefox Security Toolkit加载到浏览器里,增强渗透测试的工具利用. 兼容性: 目前仅支持Linux/Unix环境(可在kali上安装使用). 下载安装: wget h ...
- 各种不会。。。。编译和安装hadoop过程中好多命令和工具不会
http://blog.csdn.net/bamuta/article/details/13506893 64位下解决方法(重新编译~~) http://zhidao.baidu.com/link? ...
- linux目录/术语/英文
1./bin :获得最小的系统可操作性所需要的命令2./boot :内核和加载内核所需的文件3./dev :终端.磁盘.调制解调器等的设备项4./etc :关键的启动文件和配置文件5./home :用 ...
- R语言中的箱图介绍 boxplot
画箱图的函数: boxplot()##help(boxplot)查询具体用法 图例的解释: 如下图,是两个简单的箱图. 中间的箱子的上下边,分别是第三,一个四分位数. 中间的黑线是第二四分位数(中 ...
- Ubuntu 安装Android Studio与使用手册
用的是Ubuntu 12.04 1.先去下载,国内可以去这里下载 https://github.com/inferjay/AndroidDevTools 2.下载后解压进入android-studio ...