| 38 | { |
| 39 | public: |
| 40 | Cypher(unsigned int l, const unsigned char* key) throw() |
| 41 | : s1(0), s2(0) |
| 42 | { |
| 43 | for (unsigned int n = 0; n < sizeof(state); ++n) |
| 44 | { |
| 45 | state[n] = n; |
| 46 | } |
| 47 | |
| 48 | for (unsigned int k1 = 0, k2 = 0; k1 < sizeof(state); ++k1) |
| 49 | { |
| 50 | k2 = (k2 + key[k1 % l] + state[k1]) & 0xff; |
| 51 | swap(state[k1], state[k2]); |
| 52 | } |
| 53 | } |
| 54 | |
| 55 | void transform(unsigned int length, const void* from, void* to) throw() |
| 56 | { |