zoukankan      html  css  js  c++  java
  • 【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()
  • 相关阅读:
    Memcached 分布式缓存系统部署与调试
    nginx_笔记分享_php-fpm详解
    nginx_笔记分享_配置篇
    linux定时任务crond那些事!
    命令passwd报错因inode节点处理记录
    linux下定时任务
    linux内核堆栈
    c语言之单链表的创建及排序
    c语言常见的几种排序方法总结
    Tiny4412之外部中断
  • 原文地址:https://www.cnblogs.com/zhaoxd07/p/5190503.html
Copyright © 2011-2022 走看看