在一些場合,常需要用到一些簡單的加密演算法,這裡的rc4就可以說是最簡單的一種。只要設定乙個足夠強的密碼,就可以適用於一些非常簡單的場合了。我是用來加密http傳送的資料的。
rc4函式(加密/解密) 其實,rc4只有加密,將密文再加密一次,就是解密了。
getkey函式 隨機字串產生器,呵呵,為了方便,大多數加密演算法都有乙個隨機密碼產生器,我也就附帶乙個了。
bytetohex函式 把位元組碼轉為十六進製製碼,乙個位元組兩個十六進製制。研究發現,十六進製制字串非常適合在http中傳輸,base64中的某些字元會造成轉義,挺麻煩的。
hextobyte函式 把十六進製制字串,轉為位元組碼。伺服器也按照十六進製制字串的形式把資料傳回來,這裡就可以解碼啦。同時,使用十六進製制字串傳輸,避開了傳輸過程中多國語言的問題。
encrypt函式 把字串經rc4加密後,再把密文轉為十六進製制字串返回,可直接用於傳輸。
decrypt函式 直接密碼十六進製制字串密文,再解密,返回字串明文。
原始碼如下:
encrypt.h檔案:
#ifndef _encrypt_rc4_
#define _encrypt_rc4_
#include
#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(const char* szsource, const char* szpassword); // 加密,返回加密結果
char* decrypt(const char* szsource, const char* szpassword); // 解密,返回解密結果
char* bytetohex(const unsigned char* vbyte, const int vlen); // 把位元組碼pbbuffer轉為十六進製制字串,方便傳輸
unsigned char* hextobyte(const char* szhex); // 把十六進製制字串轉為位元組碼pbbuffer,解碼
#endif // #ifndef _encrypt_rc4_
encrypt.cpp檔案:
#include "encrypt.h"
char* encrypt(const char* szsource, const char* szpassword) // 加密,返回加密結果
char* decrypt(const char* szsource, const char* szpassword) // 解密,返回解密結果
int rc4(const unsigned char* data, int data_len, const unsigned char* key, int key_len, unsigned char* out, int* out_len)
*out_len = data_len;
delete mbox;
return -1;
}int getkey(const unsigned char* pass, int pass_len, unsigned char* out)
return -1;
}static void swap_byte(unsigned char* a, unsigned char* b)
// 把位元組碼轉為十六進製製碼,乙個位元組兩個十六進製制,內部為字串分配空間
char* bytetohex(const unsigned char* vbyte, const int vlen)
tmp[vlen * 2] = '/0';
return tmp;
}// 把十六進製制字串,轉為位元組碼,每兩個十六進製制字元作為乙個位元組
unsigned char* hextobyte(const char* szhex)
return pbbuf;
}main.cpp檔案
#include
#include
#include
#include "encrypt.h"
int main(int argc,char *argv)
RC4加密演算法在C 中的實現
在一些場合,常需要用到一些簡單的加密演算法,這裡的rc4就可以說是最簡單的一種。只要設定乙個足夠強的密碼,就可以適用於一些非常簡單的場合了。我是用來加密http傳送的資料的。rc4函式 加密 解密 其實,rc4只有加密,將密文再加密一次,就是解密了。getkey函式 隨機字串產生器,呵呵,為了方便,...
C 加密演算法RC4
using system using system.text namespace xiaofeng.cryptography endregion region 屬性 金鑰 public string key 編碼 public encoding encoding 編碼模式 public encode...
RC4加密演算法
rc4於1987年提出,和des演算法一樣,是一種對稱加密演算法,也就是說使用的金鑰為單鑰 或稱為私鑰 但不同於des的是,rc4不是對明文進行分組處理,而是位元組流的方式依次加密明文中的每乙個位元組,解密的時候也是依次對密文中的每乙個位元組進行解密。rc4演算法的特點是演算法簡單,執行速度快,而且...