Я использую пример кода из репозитория git, чтобы понять алгоритм twofish. Код ниже работает очень хорошо. отлично, результаты также верны, проверены с помощью онлайн-инструмента ref http://twofish.online-domain-tools.com/
проблема следующая: -
int[] plainText = new int[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
0x0D, 0x0E, 0x0F };
int[] p = new int[4];
for (int i = 0; i < 4; i++) {
p[i] = plainText[4 * i] + 256 * plainText[4 * i + 1] + (plainText[4 * i + 2] << 16)
+ (plainText[4 * i + 3] << 24);
}
System.out.println("Input:");
Utils.printInput(p);
int[] key = p; //
System.out.println("Key:");
Utils.printInput(key);
//
int[] encrypted = TwoFish.encrypt(p, key);
//
System.out.println("Encrypted:");
Utils.printInput(encrypted);
System.out.println();
int[] decrypted = TwoFish.decrypt(encrypted, key);
System.out.println("Decrypted:");
Utils.printInput(decrypted);
В приведенном выше коде один и тот же ключ используется как обычный текст и ключ, хотя существует требование передачи простого текста и ключа.
int[] encrypted = TwoFish.encrypt(p, key);
приведенный выше код должен принимать входные данные из
int[] encrypted = TwoFish.encrypt("The plain text information", "000102030405060708090A0B0C0D0E0F");