python rc4
来源:互联网 发布:js event.target.id 编辑:程序博客网 时间:2024/05/16 07:56
明明RC4没写错,就是连不上服务器,来回检查了十几次,晕死,贴测试用例吧
输入是key
,需要编码的文字是plaintext
,输出的HEX String 应该是out
# key = 'Key'# plaintext = 'Plaintext'# out = BBF316E8D940AF0AD3# key = 'Wiki'# plaintext = 'pedia'# out = 1021BF0420#key = 'Secret'#plaintext = 'Attack at dawn'#out 45A01F645FC35B383552544B9BF5
implement 1
class RC4(object): def __init__(self, key=bytearray(0)): self.S = bytearray(256) self.T = bytearray(256) self.key_length = 0 self.i = 0 self.j = 0 self.k = 0 self.t = 0 self.tmp = bytes() if len(key) < 1 or len(key) > 256: raise ValueError('key len should not be %d' % len(key)) else: self.key_length = len(key) for i in range(256): self.S[i] = i self.T[i] = key[i % self.key_length] j = 0 for i in range(256): j = (j + self.S[i] + self.T[i]) & 0xFF tmp = self.S[j] self.S[j] = self.S[i] self.S[i] = tmp def flip(self, plaintext, offset, length): cipher = bytearray(length) for counter in range(length): self.i = (self.i + 1) & 0xFF self.j = (self.j + self.S[self.i]) & 0xFF self.tmp = self.S[self.j] self.S[self.j] = self.S[self.i] self.S[self.i] = self.tmp self.t = (self.S[self.i] + self.S[self.j]) & 0xFF self.k = self.S[self.t] cipher[counter] = plaintext[counter + offset] ^ self.k return cipher
implement 2
from Crypto.Cipher import ARC4class RCC4(object): def __init__(self, rc4_key): self._rc4_cipher = ARC4.new(rc4_key) def flip(self, plaintext): return self._rc4_cipher.encrypt(plaintext)
test
if __name__ == "__main__": key = "Key" plaintext = 'Plaintext' te = RC4(bytearray(key)) td = RC4(bytearray(key)) # encode transfer = te.flip(bytearray(plaintext), 0, len(plaintext)) # decode out = td.flip(transfer, 0, len(transfer)) print "%s %s" % (plaintext[3], chr(out[3])) tte = RCC4(key) ttd = RCC4(key) # encode t_transfer = tte.flip(plaintext) # encode t_out = bytearray(ttd.flip(t_transfer)) print "%s %s" % (plaintext[3], chr(t_out[3]))
阅读全文
0 0
- python rc4
- RC4算法Python实现
- python加密->RC4.py
- 使用Python实现RC4算法
- python版本rc4加解密
- RC4
- RC4
- RC4
- rc4
- RC4
- python 类版本rc4加解密
- 【Python】用base64和RC4给数据加密/解密
- RC4 加密
- RC4加密算法
- RC4算法
- RC4算法
- Openssl-rc4
- RC4算法
- 机器学习-学习笔记 学习总结归纳(第五周)
- Long time no see, my blog~
- 软件测试入门
- openCV IOS 工程 识别数字
- Bootstrap按钮插件
- python rc4
- Andriod 环境搭建
- html.div禁用点击事件
- 拖拽文件上传(Java篇)dropzone.js的简单使用
- 牛客剑指offer刷题记录(五)
- 第七周 leetcode 62. Unique Paths(Medium)
- 图解集合5:不正确地使用HashMap引发死循环及元素丢失
- 使用OLAMI SDK和讯飞语音合成制作一个语音回复的短信小助手
- 算法概论8.8