Aes 128 rijndael расшифровка онлайн: AES (Rijndael) — шифрование online
AES (Rijndael) — шифрование online
Комментарий:
Описание:
Advanced Encryption Standard (AES), также известный под своим оригинальным названием Rijndael — это спецификация для шифрования электронных
данных, созданная национальным Институтом стандартов и технологий США (NIST) в 2001 году.
AES является подмножеством шифра Rijndael, разработанного двумя Бельгийскими криптографами, Винсентом Рейменом и Джоан Даймен,
которые представили предложение NIST в процессе отбора AES. Rijndael — это семейство шифров с различными размерами ключей и блоков.
Для AES NIST выбрал трех членов семейства Rijndael, каждый из которых имеет размер блока 128 бит, но три разных длины ключа: 128, 192 и 256 бит.
AES был принят правительством США и в настоящее время используется во всем мире. Он заменяет Стандарт шифрования данных (des), который был опубликован в 1977 году.
Алгоритм, описываемый AES, является алгоритмом симметричного ключа, то есть один и тот же ключ используется как для шифрования, так и для расшифровки данных.
AES вступил в силу в качестве стандарта федерального правительства 26 мая 2002 года после утверждения министром торговли. AES включен в стандарт ISO/IEC 18033-3.
AES доступен во многих различных пакетах шифрования и является первым (и единственным) общедоступным шифром, одобренным агентством национальной безопасности (NSA)
для сверхсекретной информации при использовании в одобренном криптографическом модуле NSA (см. безопасность AES ниже).
Ресурсы:
Как устроен AES / Хабр
О чём эта статья
Долгое время я считал, что криптографические алгоритмы шифрования и хеширования, вроде AES и MD5, устроены очень сложно и написать их совсем не просто, даже имея под рукой полную документацию. Запутанные реализации этих алгоритмов на разных языках программирования только укрепляли это мнение. Но недавно у меня появилось много свободного времени и я решил разобраться в этих алгоритмах и написать их. Оказалось, что они очень просто устроены и для их реализации нужно совсем немного времени.
В этой статье я напишу как устроен алгоритм шифрования AES (которого иногда называют Rijndael) и напишу его на JavaScript. Почему на JavaScript? Чтобы запустить программу на этом языке, нужен только браузер в котором вы читаете эту статью. Чтобы запустить программу, скажем, на C, нужен компилятор и найдётся совсем мало желающих, готовых потратить время на компиляцию кода из какой то статьи. В конце есть ссылка по которой можно скачать архив с html страницей и несколькими js файлами — это пример реализации AES на JavaScript.
Как применить AES
Этот алгоритм преобразует один 128-битный блок в другой, используя секретный ключ который нужен для такого преобразования. Для расшифровки полученного 128-битного блока используют второе преобразование с тем же секретным ключом. Выглядит это так:
cipher = encrypt(block, key) // шифруем block с помощью key
block = decrypt(cipher, key) // расшифровываем cipher с помощью key
Размер блока всегда равен 128 бит. Размер ключа также имеет фиксированный размер. Чтобы зашифровать произвольный текст любым паролем можно поступить так:
- получить хеш от пароля
- преобразовать хеш в ключ по правилам описанным в стандарте AES
- разбить текст на блоки по 128 бит
- зашифровать каждый блок функцией cipher
Это можно записать так:
hash = md5(password) // MD5 хеш имеет длину 128 бит
key = keyexpansion(hash) // преобразуем хеш в ключ
blocks = split(text, 16) // разбить текст на блоки по 16 байт
for (i = 0; i < blocks.length; i++)
cipher[i] = encrypt(blocks[i], key)
Чтобы расшифровать массив блоков cipher нужно применить к каждому блоку decrypt:
hash = md5(password)
key = keyexpansion(hash)
for (i = 0; i < cipher.length; i++)
blocks[i] = decrypt(cipher[i], key)
text = merge(blocks) // соединить все блоки в одну строку
Конечно, длина текста может быть не кратна 128 битам. В таких случаях можно дополнить текст нулями до нужной длины, а в зашифрованные данные добавить несколько байт с зашифрованным размером оригинального текста. Функции aes.encrypt и aes.decrypt в файле aes.js в примере используют этот подход.
Поле GF(28)
AES активно использует так называемое конечное поле GF(28). Чтобы написать AES на JavaScript не обязательно знать, что это за поле, но если вы хотите лучше понять AES, прочтите этот раздел.
Поле GF(28) это числа 0..255 для которых определили особое умножение и особое сложение. Возмём какое нибудь число из этого поля и представим его в виде восьми битов: a = a7a6a5a4a3a2a1a0. Точно также представим число b. Сложение a и b это известная побитовая операция xor:
a + b = a xor b
У сложения есть простые свойства:
a + a = 0
-a = 0 - a = a
a - b = a + (-b) = a + b
Умножение определяется сложнее. Запишем многочлены с коэффициентами из битов этих чисел:
p = a7x7 + a6x6 + a5x5 + a4x4 + a3x3 + a2x2 + a1x + a0
q = b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + b0
Теперь перемножим эти два многочлена и найдём остаток от деления на m:
m = x8 + x4 + x3 + x + 1
r = pq mod (m)
Почему выбран именно такой m? У этого многочлена есть только два делителя-многочлена на которых он делится без остатка: единица и он сам. По аналогии с простыми числами, многочлен m «простой». Находить остаток от деления можно также как для обычных чисел: для этого достаточно уметь умножать, складывать и вычитать многочлены, причём сложение и вычитание производят по правилам GF(28), т.е. сложение и вычитание многочленов это xor между каждой парой коэффициентов. Вот два примера:
x3 + x2 + 1 mod (x3 + 1) = x2 // нужно один раз отнять x3+1
x3 + x2 + 1 mod (x2 + 1) = (x3 + x2 + 1) - (x + 1)(x2 + 1) = -x
Многочлен r представим в виде
r = r7x7 + r6x6 + r5x5 + r4x4 + r3x3 + r2x2 + r1x + r0
Его 8 коэффициентов представляют собой 8-битовое число из поля GF(28) и это число называется произведением a•b. В отличие от сложения, умножение нельзя найти парой простых побитовых операций. Однако умножение на произвольный многочлен в поле GF(28) можно свести к умножению на многочлен x, а умножить на x можно несколькими побитовыми операциями, о чём пойдёт речь ниже.
Для обозначения многочленов в GF(28) используют 16-ричные цифры. Например
m = x8 + x4 + x3 + x + 1 = 100011011 = 0x011b = {01}{1b}
Умножить на многочлен x = {02} в поле GF(28) очень просто. Рассмотрим произведение:
xp = x(a7x7 + a6x6 + a5x5 + a4x4 + a3x3 + a2x2 + a1x + a0) =
a7x8 + a6x7 + a5x6 + a4x5 + a3x4 + a2x3 + a1x<2 + a0x
p = a7a6a5a4a3a2a1a0
xp = a7a6a5a4a3a2a1a00 // это сдвиг влево на один бит
Теперь нужно найти остаток от деления на m. Если бит a7 = 1, то нужно один раз вычесть m. Если a7 = 0 то вычитать ничего не нужно. Итак:
r = xp mod (m) = xp - m если a7 = 1
r = xp mod (m) = xp если a7 = 0
Умножение на x можно записать такой функцией:
gf.xtime = function(b)
{
var highbit = b & 0x80
var shl = (b << 1) & 0xff
return highbit == 0 ? shl : shl ^ 0x1b
}
Зная как умножать на x можно умножить на любой другой многочлен. Для примера найдём a•b где a = {3c}, b = {a1}:
b = {a1} = 10100001 = {80} + {20} + {01}
a•b = a•{80} + a•{20} + a•{01} = a•x7 + a•x5 + a =
a•{02}•{02}•{02}•{02}•{02}•{02}•{02} + a•{02}•{02}•{02}•{02}•{02} + a =
{29} + {c1} + {3c} = {d4}
Осталась одна простая операция в поле GF(28). У любого байта b, кроме нуля, есть обратный байт a = b-1 который обладает свойством a•b = {01}. Все три функции для работы с полем — умножение на x, умножение двух произвольных байтов и нахождение обратного — я собрал в маленькую библиотеку gf на JavaScript.
Таблица SBox
Эта таблица представляет собой 256-байтый массив и используется для замены одного байта другим. Не обязательно понимать как она получается, потому что в код можно просто скопировать этот массив. Чтобы узнать чему равен элемент SBox[b] нужно три действия:
- найти обратный байт к b в поле GF(28) (ноль оставить без изменений)
- умножить результат состоящий из восьми битов на матрицу 8×8 из 64 битов
- добавить {63}
В сумме эти три действия дают афинное преобразование:
Несложно понять как построена эта матрица из битов. Для умножения битов нужно применять «and», для сложения — «xor». Например:
r0 = b0 + b4 + b5 + b6 + b7 + 1
Функцию sbox я написал так:
aes.sbox = function(b)
{
var m = 0xf8
var r = 0
var q = gf.inv(b) || 0
for (var i = 0; i < 8; i++)
{
r = (r << 1) | bits.xorbits(q & m)
m = (m >> 1) | ((m & 1) << 7)
}
return r ^ 0x63
}
Построенная таблица выглядит так:
63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76
ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2
cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16
Её можно просто скопировать в код, как часто делают, а можно вычислять функцией sbox по мере надобности.
Таблица InvSBox
Для дешифрования текста AES использует таблицу обратную к SBox. Таблица InvSBox обладает одним свойством: InvSBox[SBox[i]] = i. InvSBox выглядит так:
52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fb
7c e3 39 82 9b 2f ff 87 34 8e 43 44 c4 de e9 cb
54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e
08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25
72 f8 f6 64 86 68 98 16 d4 a4 5c cc 5d 65 b6 92
6c 70 48 50 fd ed b9 da 5e 15 46 57 a7 8d 9d 84
90 d8 ab 00 8c bc d3 0a f7 e4 58 05 b8 b3 45 06
d0 2c 1e 8f ca 3f 0f 02 c1 af bd 03 01 13 8a 6b
3a 91 11 41 4f 67 dc ea 97 f2 cf ce f0 b4 e6 73
96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e
47 f1 1a 71 1d 29 c5 89 6f b7 62 0e aa 18 be 1b
fc 56 3e 4b c6 d2 79 20 9a db c0 fe 78 cd 5a f4
1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f
60 51 7f a9 19 b5 4a 0d 2d e5 7a 9f 93 c9 9c ef
a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61
17 2b 04 7e ba 77 d6 26 e1 69 14 63 55 21 0c 7d
Виды AES
Алгоритм AES преобразует блок длиной 128 битов в другой блок той же длины. Для преобразования применяется расписание ключей w получаемое из ключа. 128-битный блок в AES представляется в виде матрицы 4×Nb. Стандарт допускает только одно значение Nb = 4, поэтому длина блока всегда 128 бит, хотя алгоритм может работать с любым Nb. Длина ключа равна 4Nk байт. Алгоритм шифрования блока состоит из Nr раундов — применений одной и той же группы преобразований к 128-битному блоку данных. Стандарт допускает следующие комбинации этих трёх параметров:
Nk | Nb | Nr | |
AES-128 | 4 | 4 | 10 |
AES-192 | 6 | 4 | 12 |
AES-256 | 8 | 4 | 14 |
Преобразование KeyExpansion
Для шифрования текста AES применяет не пароль или хеш от пароля, а так называемое «расписание ключей» получаемое из ключа. Это расписание можно представить как Nr + 1 матриц размера 4×Nb. Алгоритм шифрования делает Nr + 1 шагов и на каждом шаге он, помимо других действий, берёт одну матрицу 4×Nb из «расписания» и поэлементно добавляет её к блоку данных.
Шифрование блока данных
Алгоритм шифрования получает на вход 128-битный блок данных input и расписание ключей w, которое получается после KeyExpansion. 16-байтый input он записывает в виде матрицы s размера 4×Nb, которая называется состоянием AES, и затем Nr раз применяет к этой матрице 4 преобразования. В конце он записывает матрицу в виде массива и подаёт его на выход — это зашифрованный блок. Каждое из четырёх преобразований очень простое.
- AddRoundKey берёт из расписания ключей одну матрицу размера 4×Nb и поэлементно добавляет её к матрице состояния. Если два раза применить AddRoundKey, то ничего не изменится, поэтому преобразование обратное к AddRoundKey это оно само.
- SubBytes заменяет каждый элемент матрицы состояния соответвующим элементом таблицы SBox: sij = SBox[sij]. Преобразование SubBytes обратимо. Обратное к нему находится с помощью таблицы InvSBox.
- ShiftRows сдвигает i-ую строку матрицы s на i позиций влево, считая i с нуля. Обратное преобразование InvShiftRows сдвигает строки вправо.
- MixColumns умножает каждый столбец матрицы s слева на особую матрицу размера 4×4:
Для шифрования используют [a b c d] = [{02} {03} {01} {01}]. Можно проверить, что преобразование обратное к MixColumns[{02} {03} {01} {01}] это MixColumns[{0e} {0b} {0d} {09}].
Схематично шифрование можно изобразить так:
AddRoundKey(0)
for (var i = 1; i <= Nr - 1; i++)
{
SubBytes()
ShiftRows()
MixColumns([0x02, 003, 0x01, 0x01])
AddRoundKey(i)
}
SubBytes()
ShiftRows()
AddRoundKey(Nr)
Расшифровка
Как видно, для шифрования блока данных AES последовательно применяет к нему много обратимых преобразований. Для расшифровки нужно применить обратные преобразования в обратном порядке.
Немного оптимизации
Функция sbox имеет всего 256 возможных входных значений и 256 возможных выходных значений. Чтобы не вычислять много раз sbox для одного аргумента, нужно кешировать результаты. На JavaScript это несложно сделать даже не меняя код написанный ранее. Для этого нужно всего лишь дописать ниже вот это:
Function.prototype.cached = function()
{
var old = this
var cache = {}
return function(x)
{
if (cache[x] !== undefined)
return cache[x]
cache[x] = old(x)
return cache[x]
}
}
aes.sbox = aes.sbox.cached()
Этот код заменяет sbox функцией которая кеширует результаты sbox. Тоже самое можно сделать для любой функции, например для invsbox и rcon. Этот же приём можно применить для функции gf.mul которая умножает два байта в поле GF(28), но в этом случае размер кеша будет равен 256×256 элементов, что довольно много.
Ссылки
Документация к AES на английском называется FIPS 197.
Преобразования — шифрование online
- Без ключа
- Симметричные
- Асимметричные
- Математические
В криптографии шифрование — это процесс кодирования сообщения или информации таким образом, что только авторизованные стороны могут получить к нему доступ, а те, кто не авторизован, не могут.
Шифрование само по себе не предотвращает помехи, но отрицает понятное содержимое потенциальному перехватчику. В схеме шифрования предполагаемая информация или сообщение, называемое открытым текстом,
шифруется с помощью алгоритма шифрования — шифровального зашифрованного текста, который может быть прочитан только при расшифровке. По техническим причинам схема шифрования обычно использует
псевдослучайный ключ шифрования, сгенерированный алгоритмом. Расшифровать сообщение в принципе можно без ключа, но для хорошо продуманной схемы шифрования требуются значительные вычислительные
ресурсы и навыки. Авторизованный получатель может легко расшифровать сообщение с помощью ключа, предоставленного отправителем получателям, но не неавторизованным пользователям.
В схемах симметричного ключа ключи шифрования и дешифрования одинаковы. Сообщающиеся стороны должны иметь один и тот же ключ для обеспечения безопасной связи.
Схемы шифрования с открытым ключом ключ шифрования публикуется для всех, кто использует и шифрует сообщения. Однако только получающая сторона имеет доступ к ключу расшифровки,
который позволяет читать сообщения. Шифрование с открытым ключом было впервые описано в секретном документе в 1973 году; до этого все схемы шифрования были симметричными ключами
(также называемыми закрытыми ключами).
Объяснение шифрования AES и RSA
Вот как работает шифрование с использованием Boxcryptor
Мы шифруем файлы и тем самым обеспечиваем повышенную защиту от шпионажа и кражи данных. Для шифрования мы используем комбинацию шифрования AES-256 и шифрования RSA. Здесь мы объясняем два алгоритма.
Шифрование AES-256
Advanced Encryption Standard (AES) — один из наиболее часто используемых и наиболее безопасных алгоритмов шифрования, доступных сегодня. Это общедоступно, и это шифр, который NSA использует для обеспечения безопасности документов с классификацией «Совершенно секретно». История его успеха началась в 1997 году, когда NIST (Национальный институт стандартов и технологий) официально начал искать замену стареющему стандарту DES. Алгоритм под названием «Rijndael», разработанный бельгийскими криптографами Daemen и Rijmen, отличался повышенной безопасностью, а также производительностью и гибкостью.
Он вышел на первое место среди нескольких конкурентов и был официально анонсирован в 2001 году новым стандартом шифрования AES. Алгоритм основан на нескольких подстановках, перестановках и линейных преобразованиях, каждый из которых выполняется на блоках данных по 16 байтов, отсюда термин blockcipher. Эти операции повторяются несколько раз, называемые «раундами». Во время каждого раунда уникальный ключ раунда рассчитывается из ключа шифрования и включается в вычисления. Основываясь на блочной структуре AES, изменение отдельного бита либо в ключе, либо в блоке открытого текста приводит к совершенно другому блоку зашифрованного текста — явное преимущество перед традиционными потоковыми шифрами. Наконец, разница между AES-128, AES-192 и AES-256 — это длина ключа: 128, 192 или 256 бит — все радикальные улучшения по сравнению с 56-битным ключом DES. В качестве иллюстрации: взлом 128-разрядного ключа AES с помощью современного суперкомпьютера займет больше времени, чем предполагаемый возраст вселенной. А Boxcryptor даже использует 256-битные ключи! На сегодняшний день не существует никакой реальной атаки на AES. Поэтому AES остается предпочтительным стандартом шифрования для правительств, банков и систем высокой безопасности по всему миру.
Шифрование RSA
RSA — одна из самых успешных, асимметричных систем шифрования на сегодня. Первоначально обнаруженный в 1973 британским разведывательным агентством GCHQ, он получил классификацию «совершенно секретно». Мы должны поблагодарить криптологов Rivest, Shamir и Adleman за его гражданское повторное открытие в 1977 году. Они наткнулись на него во время попытки решить еще одну криптографическую проблему.
В отличие от традиционных симметричных систем шифрования, RSA работает с двумя различными ключами: публичным и частным. Оба они дополняют друг друга, что означает, что сообщение, зашифрованное одним из них, может быть дешифровано только его дополняющей стороной. Поскольку частный ключ не может быть вычислен из открытого ключа, последний, как правило, доступен для общественности.
Эти свойства позволяют использовать асимметричные криптосистемы в широком спектре функций, таких как цифровые подписи. В процессе подписания документа к файлу прикрепляется отпечаток пальца, зашифрованный с помощью RSA, который позволяет получателю проверять как отправителя, так и целостность документа. Безопасность RSA основана главным образом на математической проблеме факторизации целого числа. Сообщение, которое должно быть зашифровано, рассматривается как одно большое число. При шифровании сообщения оно увеличивается до степени ключа и делится с остатком на фиксированное произведение двух простых чисел. Повторяя процесс с другим ключом, открытый текст можно получить снова. Лучший известный в настоящее время способ взломать шифрование требует факторизации продукта, используемого при делении. В настоящее время невозможно вычислить эти коэффициенты для чисел, превышающих 768 бит. Вот почему современные криптосистемы используют минимальную длину ключа 3072 бита.
Как Boxcryptor Шифрует и Расшифровывает файлы
Boxcryptor реализует комбинированный процесс шифрования, основанный на асимметричном RSA и симметричном шифровании AES. Каждый файл имеет свой собственный уникальный случайный файловый ключ, который создается при создании файла.
Алгоритм шифрования AES и его надежность
После того как мы на прошлой неделе опубликовали информацию о готовящихся к продаже новых криптотелефонах X-Telecom Secure Mobile, в которых используется алгоритм шифрования AES-256, многие люди стали звонить и интересоваться, что это за алгоритм AES, насколько он надежен и удовлетворяет ли он требования информационной безопасности.
Алгоритм Advanced Encryption Standard
Advanced Encryption Standard – симметричный алгоритм блочного шифрования, принятый правительством США в качестве стандарта в результате конкурса, проведенного между технологическими институтами. Он заменил устаревший Data Encryption Standard, который больше не соответствовал требованиям сетевой безопасности, усложнившимся в XXI веке.
Этот алгоритм, кроме аббревиатуры AES, иногда называют еще Rijndael – это анаграмма из частей имен бельгийских программистов Joan Daemen и Vinent Rijmen, которые разработали AES. Строго говоря, AES и Rijndael – не совсем одно и то же, поскольку AES имеет фиксированный размер блока в 128 бит и размеры ключей в 128, 192 и 256 бит, в то время как для Rijndael могут быть заданы любые размеры блока и ключа, от минимума в 32 бит до максимума в 256 бит.
Алгоритм AES был одобрен Агентством национальной безопасности США как пригодный для шифрования особо секретной информации. Однако, правительство постановило, что AES должен периодически подвергаться проверкам и улучшениям, чтобы надежно хранить зашифрованные данные.
Информация, определенная как секретная, должна быть защищена посредством AES с длиной ключей 128, 192 и 256 бит. Для информации, определенной как особо секретная, эта длина составляет 192 или 256 бит. Суть AES в том, что любая «лобовая атака» на защищенные данные – то есть подбор всех возможных паролей – в перспективе очень сильно растягивается. Если представить, что взломщик располагает огромными ресурсами, то есть целой коллекцией суперкомпьютеров, то при усердном старании доступ к зашифрованным данным он мог бы получить через десятки лет. Если же в его распоряжении ничего этого нет, то взлом AES займет астрономически долгое время.
Надежность алгоритма шифрования AES
Считается, что используемый в Advanced Encryption Standard ключ длиной в 128 бит – достаточно надежная защита против лобовой атаки, то есть с чисто математической точки зрения подобрать один правильный пароль из всех возможных – трудноосуществимая задача. Несмотря даже на некоторые недостатки AES, взломать защищенную с помощью этого алгоритма информацию практически нереально.
Любой криптографический алгоритм требует ключ размером в то или иное количество бит, чтобы зашифровать данные, как показано в схеме №1.
Длина ключа, используемая при шифровании и определяет практическую целесообразность выполнения полного перебора, ведь информацию зашифрованную более длинными ключами экспоненциально сложнее взломать, чем с короткими.
Вот пример перебора 4-битного ключа:
Потребуется максимум 16 стадий, чтобы проверить каждую возможную комбинацию, начиная с «0000». Лобовая атака за некоторое время может пробить такой простой алгоритм.
Таблица на рисунке ниже показывает возможное число комбинаций с учетом размера ключа:
Обратите внимание на то, что по мере увеличения размера ключа количество комбинаций возрастает экспоненциально. Математические исчисления доказывают, что размер ключа в 128 бит надежнейшим образом защищает от лобовой атаки:
Таким образом, даже суперкомпьютеру понадобилось бы неисчислимо огромное количество времени, чтобы получить доступ к информации под защитой AES посредством лобовой атаки.
Для сравнения: возраст Вселенной – где-то между 13 и 14 миллиардами лет. Даже если предположить, что некий супер-суперкомпьютер мог быть справляться с алгоритмом DES за одну секунду, то на взлом AES у него ушло бы около 149 триллионов лет.
Как видите, размера ключа в 128 бит вполне достаточно, хотя совершенно секретная информация все равно шифруется с размером в 256 бит. Следующее предположение доказывает, что стандарт 128 бит будет оставаться актуальным и в будущем.
Представьте:
- каждый человек на Земле имеет десять компьютеров
- на Земле семь миллиардов человек
- каждый из этих компьютеров может проверять один миллиард комбинаций в секунду
- ключ считается взломанным, если проверено 50% всех возможных комбинаций
При всех этих условиях все население планеты смогло бы взломать один ключ… за 77,000,000,000,000,000,000,000,000 лет.
При этом интересно отметить, что разница между размером ключа в 128 бит и 256 бит не так уж принципиальна. Если бы кто-то придумал бы некую программу, способную взломать 128-битную систему, то 256 бит для этого гения не были бы помехой.
Наконец, лучше всего за AES говорит статистика: защищенные этим алгоритмом данные никогда не были взломаны. Впрочем, все это работает при размере ключа минимум в 128 бит, поскольку более ранние шифровальные алгоритмы все же не выдерживали испытания на прочность.
Несмотря на то, что скорость вычисления компьютеров увеличивается в геометрической прогрессии согласно закону Мура, 128-битного ключа вполне должно хватить на много лет вперед.
Таким образом, все звонки и сообщения в криптотелефонах X-Telecom шифруются очень надежно, ведь кроме AES-256 еще дополнительно используется алгоритм Twofish и несколько вспомогательных алгоритмов — в комплексе это дает совершенную 100%-ую защиту вашего общения от прослушки любыми современными способами.
Есть ли разница между шифрованием aes-128-cbc и AES-128?
Я хочу знать, есть ли разница между этими двумя методами шифрования? Я никогда раньше этим не пользовался. Мой клиент попросил меня использовать шифрование AES-128, но когда я его google, он показывает мне «aes-128-cbc», «aes-128-ctr», «aes-256-cbc» или «aes-256-ctr», поэтому я хочу знать, какой из них я должен использовать, который будет похож на AES-128?
ссылки : здесь я должен отправить метод шифрования
10
автор: Umair Malik
4 ответов
3 вещи:
- AES: расширенный стандарт шифрования. Это название алгоритма шифрования (symmetric encryption). Другие симметричные алгоритмы шифрования: DES, 3-DES и т. д.
- 128: это, вероятно, относится к размер ключа. Шифрование AES использует 3 размера ключей (128 бит, 192 бит и 256 бит). Размер блока в AES также 128 бит.
- CBC: это режим шифрования, который вы хотите. Существует несколько режимов шифрования, которые зависят от того, насколько быстро вы хотите, чтобы ваш алгоритм работал, параллелизм и уровень безопасности. Несколько режимов являются CBC (шифр блок цепочки), ECB(электронная кодовая книга), CFB (шифр обратной связи), CTR (счетчик) и т.д.
теперь ваш клиент попросил вас зашифровать с помощью AES-128. Таким образом, вы должны использовать алгоритм шифрования AES с 128 битным ключом. Любой режим, который вы можете использовать, будет вашим предпочтением. Я бы предпочел ПГС.
просто короткая заметка о CBC против ЕЦБ. При шифровании с помощью ECB каждый 128 бит (в зависимости от размера блока) данных шифруется одним и тем же ключом. Если в открытом тексте есть какой-либо шаблон, полученный зашифрованный текст также будет предсказуемым, независимо от того, насколько хорош алгоритм шифрования.
ЕЦБ:
Plain text: aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa
---------------- ---------------- ----------------
Encrypted: bdefjakjapqeiowp bdefjakjapqeiowp bdefjakjapqeiowp
Если вы используете CBC, первый блок получает XOR’D с IV (вектор инициализации) и зашифрован ключом, а второй блок получает XOR’D с помощью сначала блок, а затем зашифрованный с помощью ключа, третий со вторым. Полученный шифр тогда менее уязвим для частотного анализа.
это изображение взято из Wikimedia Commons, репозитория свободных медиа
недостатком является то, что вы не можете распараллелить шифрование/дешифрование, так как вам нужен результат предыдущего блока, поэтому он может быть медленнее. Но на практике это не имеет никакого значения.
глядя на ссылку, которую вы включили, он говорит, что будет принимать несколько различных режимов, включая CBC. Если у вас нет конкретной причины не использовать его, используйте AES-128-CBC. Режим CBC-это хороший режим. Вам также нужно будет понять использование заполнения (используйте PKCS#5 или PKCS#7, независимо от того, что позволяет ваша система) и вектор инициализации, IV, чтобы режим CBC работал правильно.
Не используйте режим ECB, так как он небезопасен и протекает информация.
здесь aes-128-cbc
и aes-128
. aes
расшифровывается как advanced encryption service,128
— это битовая скорость, и CBC
режим шифрования.
однако, это читается и используется только в OPEN SSL
форматы. До открытия SSL PHP использовал mcrypt_encrypt
который был неправильно разработан (более старые версии PHP).
aes-128
также может быть отражена как rijndael
при использовании mcrypt
.
0
автор: Raghu Veera
Не такой уж ты и страшный, XTS-AES / Хабр
Приветствую, %username%!
Сегодняшняя статья навеяна мыслями написать бесплатный аналог программы для шифрования файлов в DropBox, а именно аспектом режима шифрования файлов посекторно (для возможности читать\писать из/в произвольное место)
Мы поговорим о режиме шифрования XTS-AES, применяемом во всех популярных дискошифровалках (TrueCrypt, DiskCryptor).
Он описан в IEEE P1619™/D16 (Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices) и считается самым безопасным способом хранить данные посекторно.
Перво-наперво определим входные данные для работы:
- 256/512 бит ключа (может быть SHA-256/512(соль+пароль) или что нибудь вроде KDF)
- Адрес (номер) сектора
- Собсно блок данных длины кратной 128 битам (размер блока AES)
Упрощенно, алгоритм следующий:
- Разбивка ключа на два. Первая часть становится ключом шифрования данных(k1), вторая — ключом для генерации tweak value(k2)
Таким образом, если у нас используется ключ в 512 бит, то мы его пилим на 2х256 и используем в AES-256 - Конвертируем номер сектора в массив байт и шифруем его ключом k2. Это наше tweak value
- Идём по массиву данных блоками размером по 16 байт и для каждого блока:
- 1.Ксорим его с tweak value
- 2.Шифруем/расшифровываем его ключом k1
- 3.Опять ксорим уже (рас)шифрованный блок данных с tweak value. Сохраняем его, это и будет нужный нам (за/рас)шифрованный блок сектора
- 4.Умножаем tweak value на полином α = x128+x7+x2+x+1
Самое непонятное тут (для меня, в частности) это умножение на полином. Алгоритмически это просто сдвиг всего массива на 1 бит + xor на последнем шаге.
- private const int GF_128_FDBK = 0x87;
- private const int AES_BLK_BYTES = 16;
- …
- // умножаем T(weak value) на α
- Cin = 0; // бит переноса
- for (j = 0; j < AES_BLK_BYTES; j++)
- {
- Cout = (T[j] >> 7) & 1;
- T[j] = (byte)(((T[j] << 1) + Cin) & 0xFF);
- Cin = Cout;
- }
- if (Cout != 0)
- {
- T[0] ^= GF_128_FDBK;
- }
В принципе, никакого криминала. Делается это для того, чтоб tweak value был различным для каждого блока данных внутри сектора.
Вопрос к математически подкованной аудитории: Почему выбрано именно умножение на полином в GF(2) по модулю x128+x7+x2+x+1? Моих (не)знаний хватает лишь предположить, что тут замешаны циклические группы, и всё это некий аналог циклического сдвига.
Рабочий код на C#, который даже проходит стандартные тесты:
- class XTS
- {
- private const int GF_128_FDBK = 0x87;
- private const int AES_BLK_BYTES = 16;
- public static byte[] encryptSector(byte[] inData, byte[] dataEncryptionKey, byte[] tweakEncryptionKey, UInt64 sectorNumber, bool encrypt)
- {
- byte[] outData = new byte[inData.Length]; //тут будет результат. Размер inData должен быть кратен 32!
- uint i, j; // local counters
- var T = new byte[AES_BLK_BYTES]; // tweak value
- var x = new byte[AES_BLK_BYTES]; // буфер для (за/рас)шифрованного блока данных
- // конвертируем номер сектора в массив байт
- Array.Copy(BitConverter.GetBytes(sectorNumber), T, 8);
- //после шифрования в T у нас tweak value. true значит шифровать
- processAES(tweakEncryptionKey, T, true);
- // Обрабатываем по AES_BLK_BYTES байт за раз
- for (i = 0; i < inData.Length; i += AES_BLK_BYTES)
- {
- // ксорим tweak value с куском данных
- for (j = 0; j < AES_BLK_BYTES; j++)
- {
- x[j] = (byte)(inData[i + j] ^ T[j]);
- }
- // шифруем/расшифровываем блок
- processAES(dataEncryptionKey, x, encrypt);
- // ксорим tweak value с обработанным блоком данных
- for (j = 0; j < AES_BLK_BYTES; j++)
- {
- outData[i + j] = (byte)(x[j] ^ T[j]);
- }
- // Умножаем tweak value на α
- j = AES_BLK_BYTES;
- int t = T[AES_BLK_BYTES — 1];
- while (—j != 0)
- T[j] = (byte)((T[j] << 1) | ((T[j — 1] & 0x80) != 0 ? 1 : 0));
- T[0] = (byte)((T[0] << 1) ^ ((t & 0x80) != 0 ? 0x87 : 0x00));
- }
- return outData;
- }
- private static void processAES(byte[] k, byte[] T, bool encrypt)
- {
- /*AesFastEngine взят из BouncyCastle. Вы можете заменить на стандартную
- * реализацию, либо вообще использовать другой алгоритм, только учитывайте
- * размер блока шифрования.
- */
- var engine = new AesFastEngine();
- engine.Init(encrypt, new KeyParameter(k));
- engine.ProcessBlock(T, 0, T, 0);
- }
- }
______________________
Использовать AES, как видно, не обязательно. Правда, об этом ничего не сказано в стандарте.
Домашним заданием будет реализовать обработку сектора для размеров не кратных 32.
А я продолжу написание шифровалки для DropBox)
Онлайн-инструмент для шифрования и дешифрования AES
Advanced Encryption Standard (AES) — это симметричное шифрование.
алгоритм. На данный момент AES является отраслевым стандартом, так как он поддерживает 128, 192 и 256 бит.
битовое шифрование. Симметричное шифрование работает очень быстро по сравнению с асимметричным шифрованием.
а также
используются в таких системах, как система баз данных.Ниже приведен онлайн-инструмент для создания AES.
зашифрованный пароль и расшифровать зашифрованный пароль AES. Он обеспечивает два режима
шифрование и дешифрование
ЕЦБ
и режим CBC. Для получения дополнительной информации о шифровании AES посетите это объяснение
на шифровании AES.
Также вы можете найти пример снимка экрана ниже:
Зашифровать
Выход с шифрованием AES:
Руководство по использованию
Любой ввод или вывод в виде обычного текста, который вы вводите или генерируете, не сохраняется в
этот сайт,
этот инструмент предоставляется через URL-адрес HTTPS, чтобы гарантировать невозможность кражи текста.
Для шифрования вы можете ввести обычный текст, пароль, файл изображения или .txt.
файл, который вы хотите зашифровать. Теперь выберите режим шифрования блочного шифрования.
ECB (Электронная кодовая книга) — самый простой режим шифрования, не требующий IV
для шифрования. Входящий простой текст будет разделен на блоки, и каждый блок будет
зашифрованы предоставленным ключом, и, следовательно, идентичные блоки обычного текста зашифрованы в
идентичные блоки зашифрованного текста.Режим CBC есть
настоятельно рекомендуется и требует IV, чтобы сделать каждое сообщение уникальным. Если IV не введен
то значение по умолчанию будет использоваться здесь для режима CBC, а по умолчанию — с нуля.
байт [16].
Алгоритм AES имеет размер блока 128 бит, независимо от того, является ли длина вашего ключа
256, 192 или 128 бит. Когда симметричный режим шифрования требует IV, длина IV должна
быть равным размеру блока шифра.Следовательно, вы всегда должны использовать 128-битный IV (16
байтов) с помощью AES.
AES обеспечивает размер секретного ключа 128, 192 и 256 бит для
шифрование. Здесь следует помнить, если вы выбираете
128 бит для шифрования, тогда секретный ключ должен иметь длину 16 бит и 24 и 32 бит для
192 и 256 бит размера ключа. Теперь вы можете ввести секретный ключ
соответственно.По умолчанию зашифрованный текст будет закодирован в base64
но у вас есть возможность выбрать формат вывода как HEX.
Аналогичным образом, для файла изображения и файла .txt зашифрованная форма будет закодирована в Base64.
Ниже приведен снимок экрана, на котором показан пример использования этого онлайн-инструмента шифрования AES.
Расшифровка
AES также имеет такой же процесс. По умолчанию предполагается, что введенный текст находится в
Base64.На входе может быть изображение в кодировке Base64 или Hex, а также файл .txt. И
окончательный
расшифрованный вывод будет строкой Base64. Если предполагаемый вывод представляет собой простой текст, тогда он
может быть декодирован в обычный текст на месте.
Но если предполагаемый результат — изображение или файл .txt, вы можете использовать это
инструмент для преобразования вывода в кодировке base64 в изображение.
.
AES (Rijndael) — шифрование онлайн
Комментарий:
Описание:
Advanced Encryption Standard (AES), также известный под своим первоначальным названием Rijndael, представляет собой спецификацию для шифрования электронных данных.
Данные созданы Национальным институтом стандартов и технологий (NIST) в 2001 году.
AES — это подмножество шифра Rijndael, разработанного двумя бельгийскими криптографами, Винсентом Рэйманом и Джоан Дэемен,
кто представил предложение в NIST в процессе отбора AES. Rijndael — это семейство шифров с разными размерами ключей и блоков.
Для AES NIST выбрал трех членов семейства Rijndael, каждый из которых имеет размер блока 128 бит, но три разные длины ключа: 128, 192 и 256 бит.
AES был принят правительством США и теперь используется во всем мире. Он заменяет Стандарт шифрования данных (des), опубликованный в 1977 году.
Алгоритм, описанный AES, представляет собой алгоритм с симметричным ключом, то есть один и тот же ключ используется как для шифрования, так и для дешифрования.
AES вступил в силу в качестве стандарта федерального правительства 26 мая 2002 г. после утверждения министром торговли.AES включен в ISO / IEC 18033-3.
AES доступен во многих различных пакетах шифрования и является первым (и единственным) общедоступным шифрованием, одобренным Агентством национальной безопасности (NSA).
для получения совершенно секретной информации при использовании в одобренном NSA криптографическом модуле (см. безопасность AES ниже).
Ресурсы:
.
Rijndael Encryption — Простое шифрование или дешифрование строк или файлов
Symmetric Ciphers Online позволяет зашифровать или расшифровать произвольное сообщение
используя несколько хорошо известных
симметричные алгоритмы шифрования
например AES, 3DES или BLOWFISH.
Симметричные шифры используют одинаковые (или очень похожие с алгоритмической точки зрения
view) ключи как для шифрования, так и для дешифрования сообщения. Они предназначены для
быть легко вычисляемым и способным обрабатывать даже большие сообщения в реальном времени.Таким образом, симметричные шифры удобны для использования одним объектом, который знает
секретный ключ, используемый для шифрования и необходимый для расшифровки его
частные данные — например, алгоритмы шифрования файловой системы основаны на
симметричные шифры. Если симметричные шифры должны использоваться для безопасной связи
между двумя или более сторонами проблемы, связанные с управлением симметричными ключами
возникают. Такие проблемы можно решить с помощью
гибридный подход
это включает в себя использование
асимметричные шифры.
Симметричные шифры являются базовыми блоками многих криптографических систем и
часто используется с другими механизмами криптографии, которые компенсируют их
недостатки.
Симметричные шифры могут работать либо в
блочный режим или в
потоковый режим.
Некоторые алгоритмы поддерживают оба режима, другие поддерживают только один режим.
В блочном режиме криптографический алгоритм разбивает входное сообщение на
массив небольших блоков фиксированного размера, а затем шифрует или дешифрует блоки
по одному. В потоковом режиме каждая цифра (обычно один бит) ввода
сообщение шифруется отдельно.
В блочном режиме обработки, если блоки были зашифрованы полностью
независимо от того, зашифрованное сообщение может быть уязвимо для некоторых тривиальных атак.Очевидно, если бы было два одинаковых блока, зашифрованных без дополнительных
контекст и используя ту же функцию и ключ, соответствующие зашифрованные блоки
тоже будет идентичным. Вот почему блочные шифры обычно используются в различных
режимы работы.
Режимы работы вводят дополнительную переменную в функцию, которая содержит
состояние расчета. Состояние изменяется во время шифрования / дешифрования
процесс и объединены с содержанием каждого блока. Такой подход смягчает
проблемы с идентичными блоками, а также могут служить для других целей.В
значение инициализации дополнительной переменной называется
вектор инициализации. В
различия между режимами работы блочных шифров заключаются в том, как они сочетаются
вектор состояния (инициализации) с входным блоком и путь вектора
значение изменяется во время расчета. Потоковые шифры сохраняются и меняются
их внутреннее состояние по дизайну и обычно не поддерживает явный входной вектор
значения на их входе.
Примечание по безопасности: данные передаются по сети в незашифрованном виде !
Пожалуйста, не вводите конфиденциальную информацию в форму выше
поскольку мы не можем гарантировать вам, что ваши данные не будут скомпрометированы.
Используя выбор Тип входа , выберите тип входа —
текстовая строка или файл. В случае ввода текстовой строки введите свой ввод
в Входной текст textarea 1,2 .
В противном случае используйте кнопку «Обзор», чтобы выбрать входной файл для загрузки. Затем выберите криптографическую функцию, которую вы
хотите использовать в поле Функция .
В зависимости от выбранной функции поле Вектор инициализации (IV) имеет вид
показано или скрыто.Вектор инициализации — это всегда последовательность байтов, каждый байт
должен быть представлен в шестнадцатеричной форме.
Выберите режим работы в поле Mode и введите ключ в
поле Key . Допустимая длина ключей для определенных криптографических функций
перечислены ниже. Если вы не укажете ключ с допустимой длиной, ключ будет продлен на
правильное количество нулевых байтов в конце. При смене ключа префикс функции sha1 (key) будет
автоматически заполняется поле IV.Вы все еще можете изменить IV.
Функция предназначена только для вашего удобства. С помощью переключателей под
Ключ поле ввода, вы можете указать, вводится ли значение ключа
следует интерпретировать как обычный текст или шестнадцатеричное значение.
Наконец, нажмите «Зашифровать!» или кнопку «Расшифровать!» кнопка
в зависимости от того, хотите ли вы, чтобы входное сообщение было зашифровано или расшифровано.
Выходное сообщение отображается в шестнадцатеричном виде и может быть загружено как
двоичный файл.Формат выходного файла — это просто дамп двоичных данных.
Вектор инициализации добавлен к имени файла для удобства.
Криптографическая функция | Длина ключа | Длина вектора инициализации (все режимы) | ||
---|---|---|---|---|
В байтах | В битах | В байтах | В битах | |
AES | 16, 24 или 32 | 128, 192 или 256 | 16 | 128 |
DES | 1-8 байтов | 8-64 | 16 | 128 |
ТРОЙНИКИ | От 1 до 24 | от 8 до 192 | 16 | 128 |
BLOWFISH | 1 до 56 | 8 до 448 | 16 | 128 |
BLOWFISH-compat | от 1 до 56 | от 8 до 448 | 16 | 128 |
RIJNDAEL-256 | от 1 до 32 | от 8 до 256 | 64 | 512 |
R4 | 1 до 256 | 8 до 2048 | — | — |
SERPENT | 1 до 32 | 8 до 256 | 32 | 256 |
ДВА РЫБКИ | от 1 до 32 | от 8 до 256 | 32 | 256 |
Таблица 1.Поддерживаемые длины ключей и длины IV
1 Вы можете использовать только шестнадцатеричные символы, символы новой строки, табуляторы и символы новой строки, если вы расшифровываете строку.
2 В вашем распоряжении есть функция автоопределения вводимого текста.
Автоопределение определяет, находится ли содержимое поля Входной текст в
форма обычного текста или шестнадцатеричной строки. Вы можете отключить эту функцию,
нажав на «ВЫКЛ» или изменив текущий тип ввода под Текст ввода
поле.
Максимальный размер вводимой текстовой строки — 131 072 символа.
Максимальный размер входного файла — 2 097 152 байта.
.Шифрование
AES — Простое шифрование или дешифрование строк или файлов
Symmetric Ciphers Online позволяет зашифровать или расшифровать произвольное сообщение
используя несколько хорошо известных
симметричные алгоритмы шифрования
например AES, 3DES или BLOWFISH.
Симметричные шифры используют одинаковые (или очень похожие с алгоритмической точки зрения
view) ключи как для шифрования, так и для дешифрования сообщения. Они предназначены для
быть легко вычисляемым и способным обрабатывать даже большие сообщения в реальном времени.Таким образом, симметричные шифры удобны для использования одним объектом, который знает
секретный ключ, используемый для шифрования и необходимый для расшифровки его
частные данные — например, алгоритмы шифрования файловой системы основаны на
симметричные шифры. Если симметричные шифры должны использоваться для безопасной связи
между двумя или более сторонами проблемы, связанные с управлением симметричными ключами
возникают. Такие проблемы можно решить с помощью
гибридный подход
это включает в себя использование
асимметричные шифры.
Симметричные шифры являются базовыми блоками многих криптографических систем и
часто используется с другими механизмами криптографии, которые компенсируют их
недостатки.
Симметричные шифры могут работать либо в
блочный режим или в
потоковый режим.
Некоторые алгоритмы поддерживают оба режима, другие поддерживают только один режим.
В блочном режиме криптографический алгоритм разбивает входное сообщение на
массив небольших блоков фиксированного размера, а затем шифрует или дешифрует блоки
по одному. В потоковом режиме каждая цифра (обычно один бит) ввода
сообщение шифруется отдельно.
В блочном режиме обработки, если блоки были зашифрованы полностью
независимо от того, зашифрованное сообщение может быть уязвимо для некоторых тривиальных атак.Очевидно, если бы было два одинаковых блока, зашифрованных без дополнительных
контекст и используя ту же функцию и ключ, соответствующие зашифрованные блоки
тоже будет идентичным. Вот почему блочные шифры обычно используются в различных
режимы работы.
Режимы работы вводят дополнительную переменную в функцию, которая содержит
состояние расчета. Состояние изменяется во время шифрования / дешифрования
процесс и объединены с содержанием каждого блока. Такой подход смягчает
проблемы с идентичными блоками, а также могут служить для других целей.В
значение инициализации дополнительной переменной называется
вектор инициализации. В
различия между режимами работы блочных шифров заключаются в том, как они сочетаются
вектор состояния (инициализации) с входным блоком и путь вектора
значение изменяется во время расчета. Потоковые шифры сохраняются и меняются
их внутреннее состояние по дизайну и обычно не поддерживает явный входной вектор
значения на их входе.
Примечание по безопасности: данные передаются по сети в незашифрованном виде !
Пожалуйста, не вводите конфиденциальную информацию в форму выше
поскольку мы не можем гарантировать вам, что ваши данные не будут скомпрометированы.
Используя выбор Тип входа , выберите тип входа —
текстовая строка или файл. В случае ввода текстовой строки введите свой ввод
в Входной текст textarea 1,2 .
В противном случае используйте кнопку «Обзор», чтобы выбрать входной файл для загрузки. Затем выберите криптографическую функцию, которую вы
хотите использовать в поле Функция .
В зависимости от выбранной функции поле Вектор инициализации (IV) имеет вид
показано или скрыто.Вектор инициализации — это всегда последовательность байтов, каждый байт
должен быть представлен в шестнадцатеричной форме.
Выберите режим работы в поле Mode и введите ключ в
поле Key . Допустимая длина ключей для определенных криптографических функций
перечислены ниже. Если вы не укажете ключ с допустимой длиной, ключ будет продлен на
правильное количество нулевых байтов в конце. При смене ключа префикс функции sha1 (key) будет
автоматически заполняется поле IV.Вы все еще можете изменить IV.
Функция предназначена только для вашего удобства. С помощью переключателей под
Ключ поле ввода, вы можете указать, вводится ли значение ключа
следует интерпретировать как обычный текст или шестнадцатеричное значение.
Наконец, нажмите «Зашифровать!» или кнопку «Расшифровать!» кнопка
в зависимости от того, хотите ли вы, чтобы входное сообщение было зашифровано или расшифровано.
Выходное сообщение отображается в шестнадцатеричном виде и может быть загружено как
двоичный файл.Формат выходного файла — это просто дамп двоичных данных.
Вектор инициализации добавлен к имени файла для удобства.
Криптографическая функция | Длина ключа | Длина вектора инициализации (все режимы) | ||
---|---|---|---|---|
В байтах | В битах | В байтах | В битах | |
AES | 16, 24 или 32 | 128, 192 или 256 | 16 | 128 |
DES | 1-8 байтов | 8-64 | 16 | 128 |
ТРОЙНИКИ | От 1 до 24 | от 8 до 192 | 16 | 128 |
BLOWFISH | 1 до 56 | 8 до 448 | 16 | 128 |
BLOWFISH-compat | от 1 до 56 | от 8 до 448 | 16 | 128 |
RIJNDAEL-256 | от 1 до 32 | от 8 до 256 | 64 | 512 |
R4 | 1 до 256 | 8 до 2048 | — | — |
SERPENT | 1 до 32 | 8 до 256 | 32 | 256 |
ДВА РЫБКИ | от 1 до 32 | от 8 до 256 | 32 | 256 |
Таблица 1.Поддерживаемые длины ключей и длины IV
1 Вы можете использовать только шестнадцатеричные символы, символы новой строки, табуляторы и символы новой строки, если вы расшифровываете строку.
2 В вашем распоряжении есть функция автоопределения вводимого текста.
Автоопределение определяет, находится ли содержимое поля Входной текст в
форма обычного текста или шестнадцатеричной строки. Вы можете отключить эту функцию,
нажав на «ВЫКЛ» или изменив текущий тип ввода под Текст ввода
поле.
Максимальный размер вводимой текстовой строки — 131 072 символа.
Максимальный размер входного файла — 2 097 152 байта.
.