2014-01-26 5 views
0

Я пытаюсь зашифровать файл, добавив некоторый int (выбранный случайным образом) для каждого символа на нем. , например, если файл содержит строку «abcde», при этом ключ = 2 зашифрованной строкой будет «cdefg» , проблема заключается в том, что im использует алгоритм шифрования много времени, а не im над таблицей ascii (более 255). Я пытался мыслить способом по модулю, но это не помогло. У кого-нибудь есть идея?Шифрование файла в java

+1

Простой шифр замещения на самом деле не гарантирует тег «шифрования» или описание. – EJP

+2

Это называется [Цезарский шифр] (http://en.wikipedia.org/wiki/Caesar_cipher). – Jesper

ответ

1

Когда вы переходите через значение таблицы ascii 255, оберните его в 0. Что-то вроде:

int randomKey = 2; //However you want to assign the value - do it. 
... 
//This is how you "encrypt" a character. Example character is 'a'. 
int character = 'a'; 
int encryptedChar = character + randomKey; 
if (encryptedChar > 255) { 
    encryptedChar -= 255; 
} 

Когда «расшифровать» следуйте логике обратного хода.

Однако это очень слабое «шифрование». Криптоаналитик разломит его в кратчайшие сроки!

Также обратите внимание, что java char имеет 16 бит. Значение может быть больше 255. Вы должны убедиться, что входные символы находятся в диапазоне 0-255. Отклонить значения выше этого.

+0

Получил, спасибо! –

+1

ОП, упомянутый по модулю, не работает? 'int encryptedChar = (character + randomKey)% 255;' должен работать нормально, а 'if' можно удалить. – Raman

+0

Согласен. Modulo тоже должен работать. – RaviH

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