Введение в 3DES:
3DES (или Triple DES) является общим термином для пароля блочного алгоритма шифрования Triple Data. Это эквивалентно применению алгоритма шифрования DES в три раза к каждому блоку данных. Из-за расширенной вычислительной мощности компьютеров длина ключа исходного пароля DES стала легко продуманной; 3DES предназначен для обеспечения относительно простого метода, а именно, чтобы избежать аналогичных атак, увеличивая длину ключа DES, а не разработав совершенно новый алгоритм шифров.
Сегодня мне нужно реализовать DES на стороне клиента. Я быстро нашел http://www.tero.co.uk/des/code.php
Пример приложения
var key = "Это ключ 24 байта !!"; var message = "Это тестовое сообщение"; var ciphertext = des (ключ, сообщение, 1, 0); document.writeln ("des test:" + stringtohex (ciphertext));Конечно, было обнаружено, что это не то, что нам нужно. Наш сервер использует des-ede, который, кажется, называется Triple DES в Java
Здесь есть небольшая яма, которая поддерживает 3des
// Сколько итераций (1 для DES, 3 для Triple DES) VARITATIONS = KEY.Length> 8? 3: 1; // Изменено Павлом 16/6/2007, чтобы использовать тройной DES для 9+ байтовых ключей
Но есть небольшая ошибка в использовании ключа
Если это 64 бита, это положительное решение DES, но 3DE могут составлять 128 бит или 192 бит.
Процесс 3DES равен en (K3, de (K2, en (k1, p))))))))))
Когда K1 = K3 можно использовать упрощенный 128-битный ключ.
key = "k1k1k1k1k2k2k2k2k2" Фактически, это должно быть эквивалентно K1k1k1k1k2k2k2k2k1k1k1k1k1. Автор не реализовал это
Еще один - режим прокладки. Короче говоря, при шифровании блока, как должно быть заполнено недостаточное пространство? Ниже приведен исходный код
if (padding == 2) сообщение += ""; // Направить сообщение Spaceselse if (padding == 1) {temp = 8- (len%8); Сообщение += String.fromCharcode (температура, температура, температура, температура, температура, темп, темп, темп); if (temp == 8) len += 8;} // pkcs7 paddingelse if (! Padding) Сообщение += "/0/0/0/0/0/0/0/0/0/0/0"; // заполнить сообщение с помощью нулевых байтовТеперь обычно используется PKCS5/7
Обратите внимание на эти два пункта при вызове, на самом деле Des-ede реализован.
Пример
var key = "b964b7c58e99b59" + "b964b7c5"; var message = "Это тестовое сообщение"; var ciphertext = des (ключ, сообщение, 1, 0,0,1); document.writeln ("<br/> test:" + stringtohex (ciphertext));Выше приведено 3DES в JavaScript, представленном вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!