【Python】用base64和RC4给数据加密/解密

来源:互联网 发布:js拉链是哪个国家的 编辑:程序博客网 时间:2024/05/17 05:29
# -*- coding: utf-8 -*-import random, base64from hashlib import sha1def 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 datadef 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())# 需要加密的数据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 
0 0
原创粉丝点击