Шифрование с помощью DES и пароля - PullRequest
2 голосов
/ 04 декабря 2010

Я использую код, который нашел здесь для шифрования с использованием DES. Я отправляю это значение стороннему сервсу, но, похоже, не работает.

Вопрос в коде, данный код, соль и итерация используются в качестве параметров для создания инициализации шифра с параметром spec:

// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec( salt, iterationCount );

// Create the ciphers
ecipher.init(Cipher.ENCRYPT_MODE, key , paramSpec);
dcipher.init(Cipher.DECRYPT_MODE, key , paramSpec);

Если я изменю счетчик итераций, у меня будут другие результаты.

Как я могу узнать, что используется на другой стороне провода? Единственное, что я знаю по этому стороннему сервису, это то, что используемый алгоритм - это DES и, конечно, секретный пароль.

Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2010

«DES» - это всего лишь одна итерация. Его преемник Triple DES шифрует каждый блок данных три раза выполняет три итерации алгоритма. Если ожидается, что вы будете выполнять шифрование, используя только «DES», одна итерация должна быть правильной.

В целом считается плохой практикой писать собственные криптографические функции для чего-либо, кроме игрушечных реализаций. Написание безопасных, правильных библиотек для криптографии иногда бывает сложно. Рассмотрите возможность использования Java Cryptography Architecture , части Java Platform SE 6.

1 голос
/ 04 декабря 2010

Ваша проблема в том, что вы знаете алгоритм шифрования (DES), но не алгоритм генерации ключей.Для получения ключа из пароля существует множество возможностей.PBEParameterSpec из вашего примера использует алгоритм PKCS # 5 для получения ключа из пароля.Это очень хороший алгоритм для этой цели, но часто люди сами пытаются разработать простой алгоритм - например, просто хэширование пароля или некоторые еще более худшие методы.Определить, какой метод используется, нелегко.Если у вас есть работающее приложение, использующее эту стороннюю службу, вы можете попытаться перепроектировать его, чтобы посмотреть, как оно работает.

...