您的位置:首页 > 编程语言 > Python开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: