Написание программы для шифрования(криптография) на Delphi 6
Для начала могут пригодиться 2 функции для бинарного чтения и записи файлов в Delphi. Для работы этих функций потребуется создать в type TMyByteAr: array of byte, поскольку процедуры Delphi 6 не могут принимать на вход переменные типа array of byte, для того чтобы реализовать такую передачу создадим новый типа array of byte и он указан в качестве параметра принимаемого функциями. Функция чтения находится в листинге ниже.
В следующем листинге находится функция для записи информации в файл на Delphi из бинарного массива(array of byte).
Реализация криптографического алгоритма который смещает код каждого файла на одну единицу
Далее будут представлены листинги процедур для реализации криптографии на Delphi 6, а именно процедура осуществляющая шифрование(myCrypt) внутри которой код каждого байта входящего в процедуру массива уменьшается на 1, а если становится менее 0, то вычисляется как 256 плюс значение после вычитания единицы из кода байта(можно было сразу присвоить значение 255, при этом поскольку в следующем разделе статьи эти процедуры будут усложняться для более надёжного шифрования, используется именно такой вариант, поскольку в следующих процедурах он будет почти такой же), а так же процедура расшифровывающая входящий массив байтов(myDecrypt). В следующем листинге представлена шифрующая функция.
В следующем листинге представлена расшифровывающая входящий в неё массив байт функция(myDecript), которая восстанавливает код каждого байта путём прибавления к коду каждого байта одной единицы, а если результирующее значение оказывается более 255, то из него вычитается 256.
Алгоритм шифрования на Delphi основанный на перемешивании кодов байт исходного текста кодами байт md5 ключа
Перейдём к более стойкому шифрованию, для перемешивания байт в слудующем алгоритме шифрования будем использовать md5 хэшь который получается в результате передачи md5 функции пароля шифрования. Для начала напишем процедуру такой трансформации, она в следующем листинге.
В следующем листинге находится процедура осуществляющая шифрование(если третий параметр передан в неё в значении true) и расшифровывает(если третий параметр false).
Для более удобного вызова можно использовать отдельно написанную процедуру шифрования, её код в следующем листинге.
Так же для удобства процедура расшифрования, она в следующем листинге.