Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void midcrypt(unsigned char key[6], unsigned char in[16], unsigned char out[16]) {
- for (int i = 0; i < 16; ++i) {
- out[i] = in[i];
- }
- for (int k = 0; k < 6; ++k) {
- unsigned char x = key[k];
- for (int r = 0; r < 100; ++r) {
- for (int i = 0; i < 16; ++i) {
- x = x * 5 + 1;
- ::global_x[k] =x;
- out[i] ^= x;
- out[i] = sbox[out[i]];
- }
- int first = out[0];
- for (int i = 0; i < 15; ++i) {
- out[i] = (out[i] << 3) ^ (out[i+1] >> 5);
- }
- out[15] = (out[15] << 3) ^ (first >> 5);
- }
- }
- }
- void decrypt (unsigned char key[6], unsigned char crypted[16], unsigned char decr[16]) {
- for (int i = 0; i < 16; i++) {
- decr[i] = crypted[i];
- }
- for (int k = 5; k >= 0; k--) {
- unsigned char x = ::global_x[k];
- for (int r = 0; r < 100; r++) {
- int first = decr[15];
- int i;
- for (i = 15; i > 0; i--) {
- decr[i] = (((decr[i]) >> 3) ^ (decr[i-1] << 5));
- }
- decr[0] = ((decr[0] >> 3) ^ (first << 5 )) ;
- for (int i = 0; i < 16; i++) {
- unsigned int j;
- for (j = 0; j < sizeof(sbox); j++) {
- if (decr[i] == sbox[j])
- break;
- }
- decr[i] = j;
- decr[i] ^= x;
- x = ((x - 1) * 205) % 256;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement