Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 895

Раздел: Delphi » Прочее
/ вопрос открыт /

Приветствую, уважаемые эксперты!
У меня к вам вопрос по WEB технологии как пользаваться Квадрад Полибий. Шифр Гронсфельда а то у меня он есть а я не понимаю как он шифрюет
отве пришлите пожалюйста на bekeev_marat@mail.ru

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1.  
  2.  
  3.  
  4.  
  5. function GronsfeldEncipher(toCode, K: string): string;
  6. var i, T, _T: integer;
  7. begin
  8. for i := 1 to length(toCode) do begin
  9. _T := ord(toCode[ i ]);
  10.  
  11. T := (Ord(toCode[ i ])
  12.  
  13. +
  14. (Ord(K[(pred(i) mod length(K)) + 1]) - Ord('0'))
  15.  
  16. );
  17.  
  18. if T >= 256 then dec(T, 256);
  19. toCode[ i ] := Chr(T);
  20. end;
  21. GronsfeldEncipher := toCode;
  22. end;
  23.  
  24. function GronsfeldDecipher(toDecode, K: string): string;
  25. var i, T: integer;
  26. begin
  27. for i := 1 to length(toDecode) do begin
  28. T := (Ord(toDecode[i])
  29.  
  30. -
  31. (Ord(K[(pred(i) mod length(K)) + 1]) - Ord('0'))
  32.  
  33. );
  34. if T < 0 then Inc(T, 256);
  35. toDecode[ i ] := Chr(T);
  36. end;
  37. GronsfeldDecipher := toDecode;
  38. end;
  39.  
  40. var
  41. s: string;
  42.  
  43. begin
  44. s := GronsfeldEncipher('INFORMATION', '2178');
  45. writeln(s);
  46. writeln('s = ', GronsfeldDecipher(s, '2178'));
  47. end.
  48.  
  49.  
  50. /////////////////////////////////////////////////////////////
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. const
  60. TPolibius: array['A' .. 'E', 'A' .. 'E'] of char = (
  61. ('A', 'B', 'C', 'D', 'E'),
  62. ('F', 'G', 'H', 'I', 'K'),
  63. ('L', 'M', 'N', 'O', 'P'),
  64. ('Q', 'R', 'S', 'T', 'U'),
  65. ('V', 'W', 'X', 'Y', 'Z')
  66. );
  67. function PolibiusEncipher(toCode: string): string;
  68. var
  69. i: integer;
  70. ix, jx: char;
  71. s: string;
  72. begin
  73. s := '';
  74. for i := 1 to length(toCode) do begin
  75.  
  76. for ix := 'A' to 'E' do
  77. for jx := 'A' to 'E' do
  78. if TPolibius[ix, jx] = toCode[ i ] then begin
  79. s := s + ix + jx; break;
  80. end;
  81.  
  82. end;
  83. PolibiusEncipher := s
  84. end;
  85.  
  86. function PolibiusDecipher(toDecode: string): string;
  87. var
  88. i: integer;
  89. s: string;
  90. begin
  91. s := '';
  92. i := 1;
  93. while i <= length(toDecode) do begin
  94. s := s + TPolibius[toDecode[ i ], toDecode[succ(i)]];
  95. inc(i, 2);
  96. end;
  97. PolibiusDecipher := s
  98. end;
  99.  
  100. var
  101. s: string;
  102.  
  103. begin
  104. s := PolibiusEncipher('POLIBIUS');
  105. writeln(s);
  106. writeln('s = ', PolibiusDecipher(s));
  107. end.
  108.  


DRUNAY Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: DRUNAY (статус: Посетитель)
Вопрос отправлен: 16 марта 2010, 15:01
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 17 марта 2010, 06:38; участников в обсуждении: 1.
Егор

Егор (статус: 10-ый класс), 16 марта 2010, 17:23 [#1]:

Цитата (DRUNAY):

У меня к вам вопрос по WEB технологии
а при чём здесь WEB-технологии?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Егор

Егор (статус: 10-ый класс), 17 марта 2010, 06:38 [#2]:

не понятен алгоритм (программа) или сам метод? или и то и другое?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:47
Выполнено за 0.02 сек.