Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Кодировка полиалфавитным шифром Вигeнера

01.01.2007
{ **** UBPFD *********** by kladovka.net.ru ****
>> Кодировка полиалфавитным шифром Вигeнера - xor кодировка
 
Кодировка полиалфавитным шифром Вигeнера - xor кодировка
одна функция для кодирования и декодирования
Input - входная строка. При кодировании это незакодированная строка, при декодировнии это закодированная строка.
Key - слово ключ один и тот же в обоих случаях.
 
При совпадении символов во входной строке и строке ключе на выходе получается символ '#0'.
 
Зависимости: Стандартные модули
Автор:       Ru, DiVo_Ru@rambler.ru, Одесса
Copyright:   DiVo 2002 creator Ru
Дата:        18 ноября 2002 г.
********************************************** }
 
function VigenerCoDec(Input,Key:pchar):pchar
var
i,j:integer;
tmps,text:string;
begin
 text:=Input;
 for i:=1 to length(text) do
 begin
  if i>length(key) then j:=i mod length(key) else j:=i;
  tmps:=tmps+chr((ord(text[i]))xor(ord(key[j])));
 end;
 result:=pchar(tmps);
end; 

Пример использования:

Text:=edit1.text;
K:=edit2.text;
Edit3.text:=VigenerCoDec(Text,K);
 
Закодировать:
Input:='Привет я РУ'; Key:='hello'; result:='ГуднйзHвH++';
Восстановить:
Input:='ГуднйзHвH++'; Key:='hello'; result:='Привет я РУ';