Небольшая реализация шифра Фейстеля в JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Небольшая реализация шифра Фейстеля в Java

Сообщение Anonymous »

Я пытаюсь сделать небольшую реализацию шифра Feistel. Это то, что я пытался: < /p>

int[] left = {1,2,3};//left half of plaintext
int[] right = {4,5,6};//right half of plaintext
int temp[];//temp for swapping values

//encrypt the plaintext (left and right arrays)
for(int r = 0; r < 3; r++) {//the number of rounds
for(int i = 0; i < right.length; i++){
right = left ^ (scramble(right, KEY, r));
}
temp = left;
left = right;
right = temp;
}

//swap left and right array before decryption
temp = left;
left = right;
right = temp;
for(int r = 3; r > 0; r--) {//start from the last round
for(int i = 0; i < right.length; i++) {
right = left ^ (scramble(right, KEY, r));
}

//again, swap arrays to do the next round
temp = left;
left = right;
right = temp;
}
< /code>

Круглый функция, Scramble < /code> IS: < /p>

private static int scramble(int character, int key, int roundNumber) {
return (int) Math.pow(2 * roundNumber * key, character) % 15;
}
< /code>

Я пытаюсь сначала зашифровать левые и правые половины открытого текста, а затем запустить его через раунды расшифровки - так что к концу значения массива должны быть [ 1,2,3] и [4,5,6] (обратно в открытый текст). Используя ключ 8, после дешифрования я получаю значения [15, 13, 0] и [8, 12, 1]. Где я ошибаюсь с этим? /Использование байтовых массивов. Изменил «цикл шифрования» на: < /p>

for(int r = 1; r < 4; r++) {//the number of rounds
for(int i = 0; i < right.length; i++){
right = left ^ (scramble(right, KEY, r));
}

temp = left;
left = right;
right = temp;
}
< /code>

Петли теперь считаются раундами 1,2,3 (шифрование) и 3,2,1 (дешифрование). Однако дешифрование все еще не приводит к правильному открытому тексту.

Подробнее здесь: https://stackoverflow.com/questions/403 ... er-in-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»