在一些场合,常需要用到一些简单的加密算法,这里的RC4就可以说是最简单的一种。只要设置一个足够强的密码,就可以适用于一些非常简单的场合了。我是用来加密HTTP传送的数据的。
RC4函数(加密/解密) 其实,RC4只有加密,将密文再加密一次,就是解密了。
GetKey函数 随机字符串产生器,大多数加密算法都有一个随机密码产生器,这里就附带一个了。
ByteToHex函数 把字节码转为十六进制码,一个字节两个十六进制。研究发现,十六进制字符串非常适合在HTTP中传输,Base64中的某些字符会造成转义,挺麻烦的。
HexToByte函数 把十六进制字符串,转为字节码。服务器也按照十六进制字符串的形式把数据传回来,这里就可以解码啦。同时,使用十六进制字符串传输,避开了传输过程中多国语言的问题。
Encrypt函数 把字符串经RC4加密后,再把密文转为十六进制字符串返回,可直接用于传输。
Decrypt函数 直接密码十六进制字符串密文,再解密,返回字符串明文。
源码如下:
Encrypt.h文件:
#ifndef _ENCRYPT_RC4_
#define _ENCRYPT_RC4_
#include <string.h>
#define BOX_LEN 256
int GetKey(const unsigned char* pass, int pass_len, unsigned char *out);
int RC4(const unsigned char* data, int data_len, const unsigned char* key, int key_len, unsigned char* out, int* out_len);
static void swap_byte(unsigned char* a, unsigned char* b);
char* Encrypt(c