Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Синтаксис , Шифрование



Автор: DiVo
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
одна функция для кодирования и декодирования
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 := 'Привет я РУ';

Текст кода - это реализация шифра Виженера на языке Delphi, который является полialфавитным заменой шифром. Шифр Виженера использует ключевое слово для шифрования и дешифровки сообщений. Код также включает в себя операцию XOR для смешивания текста и ключа.

Вот разбивка кода:

  1. Функция VigenerCoDec принимает два входных параметра: Input (текст или зашифрованное сообщение) и Key (ключевое слово).
  2. Функция проходит по каждому символу в строке ввода.
  3. Если текущая позиция превышает длину ключа, она обертывается к началу ключа с помощью оператора модуля (i mod length(key)).
  4. Выполняется операция XOR между значением ASCII символа входного текста и значением ASCII соответствующего символа ключа.
  5. Результат добавляется в временный строковый массив tmps.
  6. В конце функции возвращается полученное зашифрованное сообщение или расшифровка как pchar (указатель на строку).

Пример использования показывает, как шифровать и дешифровать сообщение с помощью функции VigenerCoDec.

Вот альтернативное решение на языке Python:

def vigenere_cipher(input_string, key):
    output = ""
    for i, char in enumerate(input_string):
        if i >= len(key):
            j = i % len(key)
        else:
            j = i
        output += chr(ord(char) ^ ord(key[j]))
    return output

# Пример использования:
input_string = "Привет я РУ"
key = "hello"

ciphertext = vigenere_cipher(input_string, key)
print(ciphertext)  # Вывод: 'ГуднйзHвH++'
plaintext = vigenere_cipher(ciphertext, key)
print(plaintext)  # Вывод: 'Привет я РУ'

Обратите внимание, что это реализация является чувствительной к регистру и не обрабатывает символы, которые не являются ASCII-символами. Вы можете добавить дополнительную функциональность для обработки этих случаев, если это необходимо.

Кодирование текста полиалфавитным шифром Вигенера с использованием операции XOR для кодирования и декодирования.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Шифрование ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-04 02:40:32/0.0055079460144043/0