2010-12-03 2 views
2

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

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

// 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

FWIW, DES небезопасен и не должен использоваться в ситуациях, когда вы ожидаете, что кто-либо серьезно атакует ваши шифры. Если это самый безопасный способ общения с данным сервисом, ну, будем надеяться, что вам неинтересно никому, у которого много вычислительной мощности. – 2010-12-03 21:45:55

+0

@ Давид. Спасибо за комментарий. Yeap, мы знаем об этом. Это будет использоваться в локальной сети. – OscarRyz 2010-12-03 21:52:45

ответ

2

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

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

1

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

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