|
|
|
|
@ -31,12 +31,12 @@ void arc4::init(const char * key, size_t length) {
|
|
|
|
|
a = b = 0; |
|
|
|
|
|
|
|
|
|
for(size_t i = 0; i < sizeof(state); i++){ |
|
|
|
|
state[i] = (unsigned char)i; |
|
|
|
|
state[i] = boost::uint8_t(i); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
size_t j = 0; |
|
|
|
|
for(size_t i = 0; i < sizeof(state); i++) { |
|
|
|
|
j = (j + state[i] + (unsigned char)key[i % length]) % sizeof(state); |
|
|
|
|
j = (j + state[i] + boost::uint8_t(key[i % length])) % sizeof(state); |
|
|
|
|
std::swap(state[i], state[j]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -63,7 +63,7 @@ void arc4::crypt(const char * in, char * out, size_t length) {
|
|
|
|
|
|
|
|
|
|
for(size_t i = 0; i < length; i++) { |
|
|
|
|
update(); |
|
|
|
|
out[i] = char(state[size_t(state[a] + state[b]) % sizeof(state)] ^ (unsigned char)in[i]); |
|
|
|
|
out[i] = char(state[size_t(state[a] + state[b]) % sizeof(state)] ^ boost::uint8_t(in[i])); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|