Если ключом было слово bs, что представляет собой текст?
Любой эксперт по безопасности скажет вам, что хранить исходный текст вместе с зашифрованным очень глупо. Кроме того, он обязательно сделает замечания о процедуре заполнения, двухбуквенном ключе и так далее, но наша книга посвящена программированию, а не компьютерной безопасности.
Мы проверили свою программу, прочитав зашифрованный текст и преобразовав его в исходный. Когда пишете программу, никогда не пренебрегайте простыми проверками ее корректности.
Также вам может показаться, что такая тема как http://www.temp-bp.ru/index.php?main_page=index&cPath=881_898 никак не связана и даже не тематична с программированием. Хотя, может быть и связана.
В любом случае все-таки зайдите на сайт temp-bp.ru
Тема сверло конусное ступенчатое по металлу там представлена весьма широко.
Центральная часть программы расшифровки выглядит следующим образом:
unsigned long inptr[2]; char outbuf[nchar+1];
outbuf[nchar]=0; // терминальный знак
unsigned long* outptr = reinterpret_cast(outbuf); inf.setf(ios_base::hex ,ios_base::basefield); // шестнадцатеричный
// ввод
while (inf>>inptr[0]>>inptr[1]) { decipher(inptr,outptr,k); outf<
}
Обратите внимание на использование функции inf.setf(ios_base::hex ,ios_base::basefield);
для чтения шестнадцатеричных чисел. Для дешифровки существует буфер вывода outbuf, который мы обрабатываем как набор битов, используя приведение.
Следует ли рассматривать алгоритм TEA как пример программирования встроенной системы? Не обязательно, но мы можем представить себе ситуа
цию, в которой необходимо обеспечить безопасность или защитить финансовые транзакции с помощью многих устройств. Алгоритм TEA демонстрирует много свойств хорошего встроенного кода: он основан на понятной математической модели, корректность которой не вызывает сомнений; кроме того, он небольшой, быстрый и непосредственно использует особенности аппаратного обеспечения.
Стиль интерфейса функций encipher() и decipher() не вполне соответствует нашим вкусам. Однако эти функции были разработаны так, чтобы обеспечить совместимость программ, написанных как на языке С, так и на языке С++, поэтому в них нельзя было использовать возможности языка С+, которыми не обладает язык C. Кроме того, многие “магические константы” являются прямым переводом математических формул.