Как заставить мой алгоритм шифрования шифровать более 128 бит? - PullRequest
0 голосов
/ 05 июня 2010

ОК, теперь я написал код для реализации AES-128 :) Работает нормально.

Он принимает 128 бит, шифрует и возвращает 128 бит

Так как мне улучшить мою функцию, чтобы она могла обрабатывать более 128 бит?

Как заставить алгоритм шифрования обрабатывать строки большего размера?

Можно ли использовать тот же алгоритм для шифрования файлов? :)

Определение функции:

public byte[] Cipher(byte[] input)
{

}

Ответы [ 4 ]

5 голосов
/ 05 июня 2010

Существуют различные режимы «цепочек» или «кодовых книг», в которых вы можете запустить блочный шифр. Вам нужно будет прочитать о них и решить, что вы собираетесь поддерживать.Вам также необходимо решить, какой тип заполнения блоков вы будете использовать для частично заполненных клеммных блоков.

Для начала прочитайте http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation.

Да,конечно вы можете зашифровать файлы.Вы просто записываете блоки в другой файл.

Получите копию Прикладная криптография , если у вас ее еще нет.Это лучшее вступление в подобные вещи, которые я читал, хотя сейчас оно довольно длинное.

1 голос
/ 05 июня 2010

Есть C ++ библиотека с открытым исходным кодом Crypto ++ http://www.cryptopp.com/ Хотя кажется, что вы пытаетесь реализовать его на Java, я думаю, что стоит взглянуть. В конце концов, все дело в алгоритме ...

1 голос
/ 05 июня 2010

Во-первых, не реализуйте криптографические алгоритмы самостоятельно - используйте реализацию, созданную экспертами. Скорее всего, вы допустите ошибки и создадите небезопасную систему. .NET Framework имеет обширную встроенную поддержку криптографии в пространстве имен System.Security, включая реализацию алгоритма AES . (Первое не относится, если вы делаете это ради развлечения;)

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

1 голос
/ 05 июня 2010

Если это учебное упражнение, отлично - делай то, что говорили все остальные.

Если это будет где-нибудь вблизи производственных систем, конфиденциальных данных и т. Д. - остановитесь прямо здесь. НЕ ПИШИТЕ СВОЙ СОБСТВЕННЫЙ КОД ШИФРОВАНИЯ, НИКОГДА. Есть миллион очень тонких способов испортить это и только один способ сделать это правильно. Я уверен, что вы обычный гений и все такое, но велика вероятность того, что вы непреднамеренно напишите слегка испорченный, легко скомпрометированный код, даже не подозревая об этом; все так делают - это так.

Если это для реального проекта, сделайте себе одолжение и используйте несколько проверенных и проверенных библиотек шифрования, которые перенесли стропы и стрелы невероятного состояния, пережили испытания жизни в диком мире, подверглись нападениям, исправлениям и все еще стоят.

Кроме того, я уверен, что у тебя уже достаточно дел:)

...