python版本rc4加解密
2016-08-22 15:11
141 查看
# -*- coding: utf-8 -*- import random, base64 from hashlib import sha1 def crypt(data, key): """RC4 algorithm""" x = 0 box = range(256) for i in range(256): x = (x + box[i] + ord(key[i % len(key)])) % 256 box[i], box[x] = box[x], box[i] x = y = 0 out = [] for char in data: x = (x + 1) % 256 y = (y + box[x]) % 256 box[x], box[y] = box[y], box[x] out.append(chr(ord(char) ^ box[(box[x] + box[y]) % 256])) return ''.join(out) def tencode(data, key, encode=base64.b64encode, salt_length=16): """RC4 encryption with random salt and final encoding""" salt = '' for n in range(salt_length): salt += chr(random.randrange(256)) data = salt + crypt(data, sha1(key + salt).digest()) if encode: data = encode(data) return data def tdecode(data, key, decode=base64.b64decode, salt_length=16): """RC4 decryption of encoded data""" if decode: data = decode(data) salt = data[:salt_length] return crypt(data[salt_length:], sha1(key + salt).digest()) if __name__=='__main__': # 需要加密的数据 data = 'hello python 爱的实打实大师大师大师的发送到发送到' # 密钥 key = '123456' # 加码 encoded_data = tencode(data=data, key=key) print encoded_data # 解码 decoded_data = tdecode(data=encoded_data, key=key) print decoded_data
相关文章推荐
- python 类版本rc4加解密
- AES加解密多版本(GO、JAVA、Python)实现
- 搞定mod_python安装版本不匹配的问题
- Python2.4发布有一段时间了,Twisted,WxPython,MySQLdb都发布了面向python2.4的版本
- fitnesse python版本安装测试
- OpenSSL之RC4加解密
- Python3.0和以前版本的区别
- python实现的AES双向对称加密解密与用法分析
- 使用Python进行AES加密和解密的示例代码
- OpenSSL之RC4加解密
- 【Python】Python解释器的几种实现版本
- RC4加密解密source code(C code)
- Ken Thompson爷爷的经典复制自身代码程序 - Python版本(只用两行!)
- linux下python默认版本的选择
- Discuz Cookies解密算法的C#版本
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- RC4经典加密算法VB版本代码
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- 详解Python3.1版本带来的核心变化
- 2.3版本python如何进行调试