-
-
[求助]这个RC4哪里不对?
-
发表于:
2011-12-3 19:44
4896
-
void swap(unsigned char& a, unsigned char& b) {
unsigned char x = a;
a = b;
b = x;
}
void key_gen(unsigned char* s, unsigned char* key, int key_len) {
int i=0, j=0;
for(i=0; i<256; i++) s[i] = i;
for(i=0; i<256; i++) {
j = (j + s[i] + key[i%key_len]) %256;
swap(s[i], s[j]);
}
}
void rc4(unsigned char* s, unsigned char* data, int data_len) {
int i=0, j=0, c=0;
unsigned k;
for(c=0; c<data_len; c++) {
i = (i+1)%256;
j = (j +s[i])%256;
swap(s[i], s[j]);
k = s[(s[i] + s[j]) % 256];
data[c] ^= k;
}
}
// void dump(unsigned char* x, int len) {
// for(int i=0; i<len; i++) {
// if(i%16==0) printf("\n%02X\t", i);
// printf("%02X ", x[i]);
// }
// printf("\n");
// }
int main() {
unsigned char text[256] = {"Plaintext"};
unsigned char key[256] = {"Key"};
unsigned char sbox[256] = {0};
key_gen(sbox, key, strlen((char*)key));// RC4 init
// dump(sbox, 256);
rc4(sbox, text, strlen((char*)text));
cout << text << endl;
rc4(sbox, text, strlen((char*)text));
cout << text << endl;
return 0;
}
网上搜索了几个算法,都是不对的。。以上代码是参考搜索结果和
aa5K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3g2F1i4K6u0W2N6$3W2C8K9i4m8W2k6r3W2S2i4K6u0W2L8%4u0Y4i4K6u0r3N6$3W2C8K9g2)9J5c8W2u0o6y4q4)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4x3U0k6F1j5Y4y4H3i4K6y4n7i4@1f1^5i4@1u0r3i4K6V1&6i4@1f1%4i4@1q4r3i4K6R3%4i4@1f1$3i4K6V1$3i4K6R3%4i4@1f1%4i4@1q4n7i4@1p5H3i4@1f1&6i4K6R3%4i4K6S2o6i4@1f1%4i4K6W2m8i4K6R3@1i4@1f1@1i4@1u0o6i4@1q4m8i4@1f1@1i4@1u0n7i4@1p5K6i4@1f1%4i4@1p5H3i4K6R3I4i4@1f1#2i4K6R3I4i4K6W2m8i4@1f1%4i4K6W2m8i4K6R3@1i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1^5i4@1q4r3i4@1t1%4i4@1f1&6i4K6V1%4i4@1q4q4i4@1f1#2i4K6V1K6i4@1q4m8i4@1f1&6i4K6R3%4i4K6S2o6i4@1f1@1i4@1t1^5i4K6S2p5i4@1f1#2i4@1q4r3i4@1t1&6i4@1g2r3i4@1u0o6i4K6W2r3i4@1f1@1i4@1t1^5i4@1u0m8i4@1f1@1i4@1u0n7i4K6R3H3i4@1f1@1i4@1t1&6i4K6R3^5i4@1f1#2i4K6S2m8i4@1p5H3i4@1f1#2i4@1q4r3i4K6R3$3i4K6u0r3i4@1f1^5i4@1p5%4i4@1p5K6i4@1f1#2i4@1q4r3i4K6R3$3i4@1f1#2i4K6V1H3i4K6S2q4i4@1f1#2i4@1t1H3i4@1t1I4i4@1f1@1i4@1t1^5i4K6S2p5i4@1f1$3i4K6V1^5i4@1q4r3 "Plaintext" 了?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课