PyCrypto安装和使用示例
2014-02-19 17:06
260 查看
有的时候,用python来解密比用C++快很多,省去了很多建工程的力气。Python是每一个加密解密人员必备的一门语言 :)
下面我们来说说如何使用Pycrypto来解密加密的数据。
步骤一:安装PyCrypto,下载地址我给你准备好了:https://www.dlitz.net/software/pycrypto/。可按照如下步骤安装:
1)将python2.x安装路径加入环境变量path。
2)按照PyCrypto readme 的指示安装 python setup.py build -> python setup.py install -> python setup.py test.最后测试的时候可能会显示有错,没关系,不管它。为 了减少错误,最好下载PyCrypto稳定版。
步骤二:安装好了以后当时是使用了。我写了如下测试脚本:
这里顺便说一下我以前会碰到的一个问题:python脚本默认不支持中文编码,为了在脚本中能使用中文路径,可以在脚本开头加上脚本编码# -*- coding: utf-8 -*-。
脚本的功能是读取一个AES加密的数据文件(你可能经常需要从WireShark里扣数据出来),而我们知道密码,这时候就可以这样子解密。解密的结果保存在XXXX.o文件里。
是不是感觉很方便啊。。。
下面我们来说说如何使用Pycrypto来解密加密的数据。
步骤一:安装PyCrypto,下载地址我给你准备好了:https://www.dlitz.net/software/pycrypto/。可按照如下步骤安装:
1)将python2.x安装路径加入环境变量path。
2)按照PyCrypto readme 的指示安装 python setup.py build -> python setup.py install -> python setup.py test.最后测试的时候可能会显示有错,没关系,不管它。为 了减少错误,最好下载PyCrypto稳定版。
步骤二:安装好了以后当时是使用了。我写了如下测试脚本:
#!/usr/bin/python # -*- coding: utf-8 -*- import sys from Crypto.Cipher import AES obj = AES.new('lyp62/22Sh2RlXJF', AES.MODE_CBC, 'This is an IV456')#密钥,模式,iv filepath = sys.argv[1] bin = open(filepath, "rb").read() output = obj.decrypt(bin) open(filepath+".o", "wb").write(output) #print output
#!/usr/bin/python # -*- coding: utf-8 -*- import sys from Crypto.Cipher import AES key = '\x00'*16 iv = b'\x4e\x09\x48\x3e\x38\xf5\xff\x72\x80\x12\x7b\x9e\xfb\x5c\x2d\x33' mode = AES.MODE_CBC decryptor = AES.new(key, mode, iv) """ 上例中的key是16位, 还可以是24 或 32 位长度, 其对应为 AES-128, AES-196 和 AES-256. 解密则可以用以下代码进行: """ #decryptor = AES.new(key, mode) #plain = decryptor.decrypt(ciphertext) filepath = sys.argv[1] bin = open(filepath, "rb").read() output = decryptor.decrypt(bin) open(filepath+".o", "wb").write(output)
这里顺便说一下我以前会碰到的一个问题:python脚本默认不支持中文编码,为了在脚本中能使用中文路径,可以在脚本开头加上脚本编码# -*- coding: utf-8 -*-。
脚本的功能是读取一个AES加密的数据文件(你可能经常需要从WireShark里扣数据出来),而我们知道密码,这时候就可以这样子解密。解密的结果保存在XXXX.o文件里。
是不是感觉很方便啊。。。
相关文章推荐
- SQL——学习笔记
- java各种数据库连接
- php简单的留言板与回复功能具体实现
- Vista或Win7远程桌面连接速度慢的问题
- java.lang.ClassNotFoundException: javax.persistence.EntityListeners
- 二叉树的总结
- linux中断(与异常)处理过程
- 让插入到 innerHTML 中的 script 跑起来的代码
- C++中5个内存区的区别以及栈和堆的详细比较
- 又是一年雨季
- allegro导入和导出outline
- J2EE——JDBC
- jBPM5 入门
- LLVM TableGen介绍
- c++ string 大小写转换,split隔断指定字符
- css3隔行变换色实现示例
- C语言中修改字符串的一个字符的值
- 结构体
- #HTML:無序、有序與定義清單
- log4j