背景: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页面示例的更多相关文章

  1. python web框架之Tornado

    说Tornado之前分享几个前端不错的网站: -- Bootstrap http://www.bootcss.com/ -- Font Awesome http://fontawesome.io/ - ...

  2. Python(九)Tornado web 框架

    一.简介 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过 ...

  3. python web框架——初识tornado

    一 Tornado概述 Tornado是FriendFeed使用的可扩展的非阻塞式web框架及其相关工具的开源版本.这个Web框架看起来有些像web.py或者Google的 webapp,不过为了能有 ...

  4. Python学习笔记17—Tornado

    实例 #!/usr/bin/env Python #coding:utf-8 import tornado.httpserver import tornado.ioloop import tornad ...

  5. python爬爬爬之单网页html页面爬取

    python爬爬爬之单网页html页面爬取 作者:vpoet mail:vpoet_sir@163.com 注:随意copy 不用告诉我 #coding:utf-8 import urllib2 Re ...

  6. Python+Selenium爬取动态加载页面(2)

    注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...

  7. Python+Selenium爬取动态加载页面(1)

    注: 最近有一小任务,需要收集水质和水雨信息,找了两个网站:国家地表水水质自动监测实时数据发布系统和全国水雨情网.由于这两个网站的数据都是动态加载出来的,所以我用了Selenium来完成我的数据获取. ...

  8. Awesome Python,Python的框架集合

    Awesome Python A curated list of awesome Python frameworks, libraries and software. Inspired by awes ...

  9. 【python】Python 资源大全中文版

    申明:感谢原作者的整理与分享,本篇文章分享自:https://www.jianshu.com/p/9c6ae64a1bd7 GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常 ...

随机推荐

  1. 【POJ2104】kth num

    You are working for Macrohard company in data structures department. After failing your previous tas ...

  2. ExtJS4.2学习(四)Grid表格中文排序问题(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/173.html --------------- ...

  3. jquery 数组和字典

    1 数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...

  4. 【斜率DP】BZOJ 1010:玩具装箱

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7537  Solved: 2888[Submit][St ...

  5. express 3.0.x 中默认不支持flash() 的解决方法

    Express 3.x默认已经不支持req.flash(),如果要用flash()需要这样兼容 1.flash 消息暂存在session中,需要cookieParser 和 session中间件来声明 ...

  6. Firefox Security Toolkit 安装

    目的: 下载Firefox Security Toolkit加载到浏览器里,增强渗透测试的工具利用. 兼容性: 目前仅支持Linux/Unix环境(可在kali上安装使用). 下载安装: wget h ...

  7. 各种不会。。。。编译和安装hadoop过程中好多命令和工具不会

    http://blog.csdn.net/bamuta/article/details/13506893  64位下解决方法(重新编译~~) http://zhidao.baidu.com/link? ...

  8. linux目录/术语/英文

    1./bin :获得最小的系统可操作性所需要的命令2./boot :内核和加载内核所需的文件3./dev :终端.磁盘.调制解调器等的设备项4./etc :关键的启动文件和配置文件5./home :用 ...

  9. R语言中的箱图介绍 boxplot

    画箱图的函数: boxplot()##help(boxplot)查询具体用法   图例的解释: 如下图,是两个简单的箱图. 中间的箱子的上下边,分别是第三,一个四分位数. 中间的黑线是第二四分位数(中 ...

  10. Ubuntu 安装Android Studio与使用手册

    用的是Ubuntu 12.04 1.先去下载,国内可以去这里下载 https://github.com/inferjay/AndroidDevTools 2.下载后解压进入android-studio ...