2012-03-14 2 views
-1

Я пытаюсь написать программу RSA, чтобы узнать больше о шифре. Я использую Java, но я ищу общий совет.Лучшая практика программирования

Мой вопрос в том, что лучший способ взять содержимое файла и преобразовать его в блоки удвоения, чтобы повысить мощность?

Так что у меня есть текстовый файл ASCII, который содержит полный текст Гамлета (или K & R C, или любой другой) я превратить его в блоки байтов и поднять весь блок к власти. Если я подниму каждый байт на мощность, он будет уязвим для частотного анализа.

Прямо сейчас я прочитал файл в массив байтов, преобразованный в двойной массив, преобразуя его в 2d двойной массив размера [64] [файл/64], а для каждого double [] в массиве 2d конкатенация все удваивает строку, накладывает эту строку на двойную (или должна быть biginteger?), затем выполняйте мою математику.

Это ужасно сложно.

Я мог бы сделать это без 2d массива, но это казалось более простым способом обработки блоков, поскольку вы не можете массивы массивов в java. Вам не нужно указывать код, но я ищу лучшую архитектуру.

ответ

0

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

BigInteger был бы хорошим выбором. Да, у него есть методы вычисления простых чисел по уважительной причине. Он использует массивы длительной реализации поддержки (ну, Oracle JDK делает, но я полагаю, что другие реализации Java будут использовать и longs).

+0

Я не могу обрабатывать весь текст как число, но если я просто шифрую каждый байт, очень легко написать программу для поиска шаблонов – Muricula

+0

Я не могу обрабатывать весь текст как число, но если Я просто шифровал каждый байт, он попадал на частотный анализ. Мне нужно поднять весь блок до власти. Кроме того, если бы я должен был зашифровать что-то с помощью симметричного алгоритма, такого как AES, какова была бы точка RSA? Я вижу, что вы говорите об шифровании ключа, но почему бы не использовать обмен ключами для duffie hellman? Я использую двойники, потому что они являются самым большим примитивным типом данных. Они длиннее длинных. Я думаю, что скоро переработаю его для BigIntegers, я начинаю просто. Есть ли у вас какие-либо рекомендации относительно других реализаций? – Muricula

+0

darned timestamp при редактировании комментариев – Muricula

Смежные вопросы