Зашифровать / расшифровать строку между Java и PHP - PullRequest
3 голосов
/ 06 января 2012

Я использую шифрование AES для шифрования и дешифрования строки между php на стороне сервера и приложением Android (в качестве клиента).

Зашифрованная строка в PHP:

HaxRKnMxT24kCJWUXaVvqDHahzurJQK+sYA4lIHql/U=

а в Java это:

HaxRKnMxT24kCJWUXaVvqD/KMEkJTPTXEcCsHIYGX9TGtCNOHQcJyUURPk8qlgf3

Я использую phpseclib в скрипте PHP для шифрования.

Что мне здесь не хватает?

СоответствующийКод Java здесь

SecretKeySpec skeySpec = new SecretKeySpec(pad16(pass), "AES");
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] out = c.doFinal( input )

И код PHP здесь:

$aes = new Crypt_AES();
$aes->setKey('password');
$encrypted_encoded_text =  base64_encode($aes->encrypt($plaintext));

1 Ответ

4 голосов
/ 06 января 2012

Чтобы шифрование / дешифрование работало на разных языках, есть несколько вещей, которые должны быть одинаковыми.

  1. Алгоритм шифрования (duh!)
  2. Ключ (duh,снова!)
  3. Размер ключа
  4. Режим работы (ECB, CBC, CTR)
  5. Вектор инициализации (если CBC, нет необходимости в ECB)
  6. Схема заполнения

    и, возможно, еще несколько факторов ....

Вы уверены, что все они одинаковы для обоих языков?Если да, то ваше шифрование / дешифрование должно работать без сбоев, если в реализации нет ошибки (что очень редко, но возможно).

...