:s/Deszyfryzacja xora/Deszyfrowanie danych zaszyfrowanych za pomocą XOR-a
Możesz na przyszłość wcześniej sprawdzić w Google zanim zapytasz na forum... - ale i tak fajne zagadnienie :>
Notatki zrobione:
10110110
1011011
11101101
1110110
100
[0] [0^1] [1^2] [2^3] [3^4]
>> 1 [0] [0^1] [1^2] [2^3]
[0] [1] [0^2] [1^3] [2^4]
[0] [1] [0^2] [1^3] [2^4]
>> 2 [0] [1] [0^2] [1^3] [2^4]
[0] [1] [2] [3] [4]
Kod napisany:
#include <stdint.h>
uint16_t encrypt(uint16_t n)
{
return n ^ (n / 2);
}
uint16_t decrypt(uint16_t n)
{
n ^= (n >> 1);
n ^= (n >> 2);
n ^= (n >> 4);
n ^= (n >> 8);
return n;
}
int main()
{
int i;
scanf("%d", &i);
int c = encrypt(i);
int d = decrypt(c);
printf("i=%d c=%d d=%d", i, c, d);
}
Wynik osiągnięty:
D:\>a
123
i=123 c=70 d=123
D:\>a
124
i=124 c=66 d=124
D:\>a
125
i=125 c=67 d=125
D:\>a
126
i=126 c=65 d=126
D:\>a
0
i=0 c=0 d=0