资源简介
纯python实现的RC4加解密,不依赖任何第三方库,兼容python2和python3,支持中文加解密
代码片段和文件信息
#!python
# -*- coding:utf-8 -*-
“““
公用函数(rc4加密),兼容py2及py3
Created on 2014/5/26
Updated on 2017/11/9
@author: Holemar
“““
import sys
__all__ = (“decode“ ‘encode‘)
def RC4(data key):
“““rc4加密的核心算法“““
x = 0
box = list(range(256))
for i in list(range(256)):
x = (x + box[i] + ord(key[i % len(key)])) % 256
box[i] box[x] = box[x] box[i]
x = 0
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 hex2str(s):
“““16进制转字符串“““
if s[:2] in (‘0x‘ ‘0X‘):
s = s[2:]
res = []
for i in list(range(0 len(s) 2)):
hex_dig = s[i:i + 2]
res.append(chr(int(hex_dig base=16)))
return ‘‘.join(res)
def str2hex(input_str):
“““字符串转16进制“““
res = []
for s in input_str:
hex_dig = hex(ord(s))[2:]
if len(hex_dig) == 1:
hex_dig = “0“ + hex_dig
res.append(hex_dig)
return ‘‘.join(res)
def decode(rc4_txt key):
“““
将rc4加密后的密文,解密出来
:param {string} rc4_txt: RC4加密后的密文
:param {string} key: 加密/解密的key值
:return {string}: 返回解密后的明文
“““
if not rc4_txt:
return rc4_txt
if not key:
raise RuntimeError(u‘缺少解密的key!‘)
rc4_txt = to_str(rc4_txt)
key = to_str(key)
real_text = RC4(hex2str(rc4_txt) key)
try:
unicode # py2
return real_text
except NameError: # py3
b = bytes((ord(s) for s in real_text))
return b.decode()
def encode(real_text key):
“““
将明文字符串,用RC4加密成密文
:param {string} real_text: 明文的字符串
:param {string} key: 加密/解密的key值
:return {string}: 返回加密后的密文
“““
if not real_text:
return real_text
if not key:
raise RuntimeError(u‘缺少加密的key!‘)
real_text = to_str(real_text)
key = to_str(key)
rc4_txt = str2hex(RC4(real_text key))
return rc4_txt
system_encoding = “utf-8“
defaultencoding = sys.getdefaultencoding()
def to_str(text):
“““
中文转换,将 unicode、gbk、big5 编码转成 str 编码(utf-8)
:param {string} text: 原字符串
:return {string}: 返回转换后的字符串
“““
try:
if isinstance(text unicode):
return text.encode(system_encoding)
elif isinstance(text str):
# 没有中文,不必处理编码
if text.isalnum():
return text
text = to_unicode(text)
return text.encode(system_encoding)
else:
return str(text)
except NameError:
# py3 的处理
text = to_unicode(text)
retur
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论