python 类版本rc4加解密
来源:互联网 发布:数据录入员招聘58同城 编辑:程序博客网 时间:2024/03/29 10:08
# /usr/bin/python# coding=utf-8import sys, os, hashlib, time, base64class rc4: def __init__(self, public_key=None, ckey_lenth=16): self.ckey_lenth = ckey_lenth self.public_key = public_key or 'none_public_key' key = hashlib.md5(self.public_key).hexdigest() self.keya = hashlib.md5(key[0:16]).hexdigest() self.keyb = hashlib.md5(key[16:32]).hexdigest() self.keyc = '' def encode(self, string): self.keyc = hashlib.md5(str(time.time())).hexdigest()[32 - self.ckey_lenth:32] string = '0000000000' + hashlib.md5(string + self.keyb).hexdigest()[0:16] + string self.result = '' self.docrypt(string) return self.keyc + base64.b64encode(self.result) def decode(self, string): self.keyc = string[0:self.ckey_lenth] string = base64.b64decode(string[self.ckey_lenth:]) self.result = '' self.docrypt(string) result = self.result if (result[0:10] == '0000000000' or int(result[0:10]) - int(time.time()) > 0) and result[10:26] == hashlib.md5( result[26:] + self.keyb).hexdigest()[0:16]: return result[26:] else: return None def docrypt(self, string): string_lenth = len(string) result = '' box = list(range(256)) randkey = [] cryptkey = self.keya + hashlib.md5(self.keya + self.keyc).hexdigest() key_lenth = len(cryptkey) for i in xrange(255): randkey.append(ord(cryptkey[i % key_lenth])) for i in xrange(255): j = 0 j = (j + box[i] + randkey[i]) % 256 tmp = box[i] box[i] = box[j] box[j] = tmp for i in xrange(string_lenth): a = j = 0 a = (a + 1) % 256 j = (j + box[a]) % 256 tmp = box[a] box[a] = box[j] box[j] = tmp self.result += chr(ord(string[i]) ^ (box[(box[a] + box[j]) % 256]))if __name__=='__main__': rc = rc4('nishidahuaidan') string = 'Hello Python Hello Python Hello Python Hello Python Hello Python Hello Python Hello Python Hello Python Hello Python' print(string) str = rc.encode(string) print(str) str = rc.decode(str) print(str)
0 0
- python 类版本rc4加解密
- python版本rc4加解密
- PHP RC4 加解密类
- RC4加解密算法
- RC4加解密算法
- RC4加解密
- java RC4加解密
- RC4 加解密
- LoadRunner RC4加解密
- cocos rc4加解密
- OpenSSL之RC4加解密
- RC4的加解密原理
- iOS RC4加解密算法
- OpenSSL中RC4加解密过程调研
- Linux下RC4算法的多线程加解密
- python rsa加解密
- Python实现加解密
- python加解密
- Axis2与Spring集成发布
- qt quick 开发实战——qt 多文档编辑器
- 读书笔记-Linux C 编程从基础到实践-第二章 在Linux下进行C语言开发
- AngularJS中的双向数据绑定 ng-bind,ngshow,ng-hide,ng-class,ngAnimate
- SDUTACM 数据结构实验之排序四:寻找大富翁
- python 类版本rc4加解密
- Spring 框架Bean的生命周期方法
- 用ctags自定义的生成规则, 自己生成了lua文件的tags
- 数据结构实验之排序五:归并求逆序数
- 常见排序算法
- ActiveMQ的应用实例
- IOS开发-导航栏相关设置
- Redis锁防止并发
- Eclipse详细设置护眼背景色和字体颜色并导出