代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
】
RC4加密解密函数库
作者:
Martin
/ 发布于
2015/1/19
/
826
RC4是对称加密中比较好的加密算法,通过维护一个256长度的状态表实现一种基于密码的异或加密。下面是最近写的一个标准的RC4加密函数库,解密使用同样的函数即可。
/** RC4加密解密函数 @auhtor Hoverlees http://www.hoverlees.com */ #ifndef _RC4_H #define _RC4_H typedef struct rc4_context{ unsigned char sbox[256]; }rc4_context; /** * 初始化RC4状态表 * @param context RC4上下文 * @param key 加密密钥 * @param keyLen 密钥长度,如果为-1,程序通过strlen去计算长度 */ void rc4_init(rc4_context* context,const char* key,int keyLen); /** * RC4加密 * @param context 上下文 * @param data 要加密的数据 * @param dataLen 数据长度,如果data为字符串,该值可以为-1 * @param out 加密后保存的缓存,长度必须大于等于dataLen * @return 加密后的数据长度,一般为dataLen */ int rc4_crypt(rc4_context* context,const char* data,int dataLen,char* out); /** * RC4一次性加密 * @param key 密钥 * @param keyLen 密钥长度,如果密钥为字符串,该值可为-1 * @param data 要加密的数据 * @param dataLen 数据长度,如果data为字符串,该值可以为-1 * @param out 加密后保存的缓存,长度必须大于等于dataLen * @return 加密后的数据长度,一般为dataLen */ int rc4_crypt_once(const char* key,int keyLen,const char* data,int dataLen,char* out); #endif #include "rc4.h" #include <string.h> void rc4_init(rc4_context* context,const char* key,int keyLen){ int i,j; char t; if(keyLen<0) keyLen=strlen(key); for(i=0;i<256;i++){ context->sbox[i]=i; } for(i=j=0;i<256;i++){ j=(j+key[i%keyLen]+context->sbox[i])%256; t=context->sbox[i]; context->sbox[i]=context->sbox[j]; context->sbox[j]=t; } } int rc4_crypt(rc4_context* context,const char* data,int dataLen,char* out){ int i=0; int j=0; int ti,x; char t; if(dataLen<0) dataLen=strlen(data); for(x=0;x<dataLen;x++){ i=(i+1)%256; j=(j+context->sbox[i])%256; t=context->sbox[i]; context->sbox[i]=context->sbox[j]; context->sbox[j]=t; ti=(context->sbox[i]+(context->sbox[j]%256))%256; t=context->sbox[ti]; out[x]=data[x]^t; } return dataLen; } int rc4_crypt_once(const char* key,int keyLen,const char* data,int dataLen,char* out){ rc4_context context; rc4_init(&context,key,keyLen); return rc4_crypt(&context,data,dataLen,out); }
试试其它关键字
RC4
加密
解密函数库
同语言下
.
StringHelper.cs 对html标签过滤
.
不调用Dbhelper数据库的后台代码
.
后台弹出提示框,防止页面刷新。
.
倒计时间表
.
JAVA集成SVN,查看应用更新日志
.
输入一串无序数,返回出现次数最多的数字,并返回个数
.
table中连续字符换行
.
WPF 获取屏幕分辨率
.
简单的实现用户注册时,向其油箱发送激活码邮件,并进
.
JavaMail发送邮件
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Martin
贡献的其它代码
(
3
)
.
Form中导入数据
.
RC4加密解密函数库
.
读取文件内容到字符串
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3