RC4加密演算法在C 中的實現

2021-04-15 05:22:04 字數 2273 閱讀 9433

在一些場合,常需要用到一些簡單的加密演算法,這裡的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演算法的特點是演算法簡單,執行速度快,而且...