|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Шифрование алгоритмом AES
Кто-нибудь разбирается в шифровании aes? Мне необходимо написать криптор, но работа этого алгоритма мне не понятна.
|
#2
|
||||
|
||||
Тебе это точно поможет...досмотри до конца и все поймешь...
http://www.pgpru.com/biblioteka/statji/aesvkartinkah В начале был Бит, потом Байт и только потом появилось Слово... |
#3
|
|||
|
|||
Очень забавно) Огромное спс.
|
#4
|
||||
|
||||
Что именно не понятно?
|
#5
|
|||
|
|||
1. Если мне необходимо зашифровать текст, то ведь текст надо поместить в массив 4х4. А если текст очень большой? неужели в 128 байтный массив поместится какой угодно текст? Или таких массивов можно создать несколько?
2. В этом массиве данные хранятся в виде {xy}, что это за вид? 3. Что такое байты состояния? |
#6
|
||||
|
||||
Цитата:
Самый простой ЕСВ = электронная кодовая книга, когда текст делится на блоки по 16 байт и каждый блок шифруется отдельно. 1...16,17..32,33..48 и т.д. соответственно. 2. Шестнадцатеричная система счисления. 00=0,...,FF=255. 3. Там применяется таблица состояния 4х4= 16 байт = 128 бит, фактически это результат шифрования на каждом раунде. После 10-го раунда - результат шифрования.(при ключе 128 бит). Последний раз редактировалось Konrad, 21.01.2010 в 19:43. |
#7
|
|||
|
|||
А где можно по подробней узнать про ECB?
|
#8
|
||||
|
||||
Цитата:
Набери "ECB шифрование". |
#9
|
|||
|
|||
С ECB вроде разобрался. А как, переменную типа string присвоить переменной типа char? В массиве ведь хранятся коды букв ASCII?
Последний раз редактировалось km_, 22.01.2010 в 18:17. |
#10
|
||||
|
||||
Цитата:
Код:
var c:char; s:string; begin s:='efwergreh'; c:=s[3]; end; |
#11
|
|||
|
|||
А, понятно. Теперь по порядку. Первое что нужно было сделать, разбить текст на элементы и вставить по элементу в каждую ячейку таблицы. Потом эти элементы (буквы) перевести по их коду ASHII в шестнадцатеричные. Потом получить из массива строку вида 1...16,17..32,33..48 и т.д. И эту строку зашифровать по какой-нибудь функции. Я правильно понял? Это и есть ECB?
Последний раз редактировалось km_, 22.01.2010 в 18:33. |
#12
|
||||
|
||||
Цитата:
Блочный шифр шифрует блоками, определенной длины. В АЕS длина блока равна 128 бит=16 байт. Разбиваешь текст на части, длина каждой части - 16 байт. И шифруешь каждую часть отдельно. Это и будет ECB. Например, Текст: [Самый простой ЕС] [В = электронная ][кодовая книга, к][огда текст делит][ся на блоки по 1][6 байт и каждый ][блок шифруется о][тдельно.00000000]. Где в [] - блок 16 байт. |
#13
|
|||
|
|||
А если у нас не набирается 16 байт, как забить пустоты нулями?
|
#14
|
||||
|
||||
Цитата:
Одни специалисты рекомендуют нули, другие - случайные данные.(мотивируя это тем, что нападающий не будет знать эти данные). Последний байт - длина добавки. |
#15
|
|||
|
|||
Практически сделал ECB.
Вот код: Код:
procedure TForm1.Button1Click(Sender: TObject); var str, str1,s, block:string; i, j, t, kol, a, b:integer; input:array[1..100] of string; state:array[1..100, 1..100] of string; begin str:=edit1.text; kol:=length(str); t:=0; j:=0; a:=0; b:=1; while kol>0 do begin kol:=kol-16; t:=t+1; end; for i:=1 to t do begin str1:=copy(str, 1, 16); delete(str, 1, 16); while str1<>'' do begin j:=j+1; s:=copy(str1, 1, 1); delete(str1, 1, 1); input[j]:=s; end; for j:=1 to 16 do begin if input[j]='' then input[j]:='0'; block:=block+input[j]; end; for j:=1 to 16 do begin a:=a+1; state[a, b]:=input[j]; if a=4 then begin a:=0; b:=b+1; end; end; block:=''; for a:=1 to 4 do for b:=1 to 4 do block:=block+state[a,b]; memo1.Lines.Add(block); j:=0; end; end; Последний раз редактировалось km_, 25.01.2010 в 16:15. |