При реализации алгоритма шифрования TEA написанного на Си и
переводе его на РВ выяснилось что он не работает по банальной
причине - нет unsigned long(int,quad). Может кто-то что нибудь посоветует? Код вот такой
void encipher(unsigned long v[], unsigned long w[], unsigned long k[]) { unsigned long y=v[0], z=v[1], sum=0; unsigned long delta= 0x12345678; unsigned long a=k[0], b=k[1], c=k[2], d=k[3]; int n=32; while(n-->0) { sum += delta; y += (z << 4)+a ^ z+sum ^ (z >> 5)+b; <---- z += (y << 4)+c ^ y+sum ^ (y >> 5)+d; <----Здесь нужны беззнаковые числа. } w[0]=y; w[1]=z; <--- Это зашифрованные данные на выходе }
И почему их нельзя было реализовать в стандарте РВ? Кто нибудь это объяснит?