rc4加密算法c++
时间: 2023-06-29 10:03:47 浏览: 54
以下是一个简单的 RC4 加密算法的 C++ 实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
class RC4 {
private:
unsigned char S[256];
unsigned int i, j;
public:
RC4(unsigned char* key, int keylen) {
for (int i = 0; i < 256; i++) {
S[i] = i;
}
j = 0;
for (int i = 0; i < 256; i++) {
j = (j + S[i] + key[i % keylen]) % 256;
swap(S[i], S[j]);
}
i = j = 0;
}
void encrypt(unsigned char* data, int datalen) {
for (int k = 0; k < datalen; k++) {
i = (i + 1) % 256;
j = (j + S[i]) % 256;
swap(S[i], S[j]);
data[k] ^= S[(S[i] + S[j]) % 256];
}
}
};
int main() {
unsigned char key[] = "this is a key";
unsigned char data[] = "hello world";
int keylen = strlen((char*)key);
int datalen = strlen((char*)data);
RC4 rc4(key, keylen);
rc4.encrypt(data, datalen);
cout << "Encrypted data: " << data << endl;
rc4 = RC4(key, keylen);
rc4.encrypt(data, datalen);
cout << "Decrypted data: " << data << endl;
return 0;
}
```
使用该算法可以对任意长度的数据进行加密和解密。可以自定义密钥和数据,加密后输出加密后的数据,再将加密后的数据解密,输出解密后的数据。