OpenSSL [des-ede3-cbc] Расшифровка php - PullRequest
0 голосов
/ 29 января 2019

Мне пришлось получить некоторые данные, зашифрованные с помощью 3DES с общими ключами.Я использую php7 и функцию openssl_decrypt, но я не могу воссоздать результат примера документации, отправленной мне.

Команда OpenSSL, которая создает отправленные мне данные, выглядит следующим образом:

openssl enc -des-ede3-cbc -base64 -K 17839778773fadde0066e4578710928988398877bb123789 -iv 00000000 -in D:/in.txt

Example:
string_encoded: 123456
data_to_decrypt: Ja79hWTRfBE=

Я попытался расшифровать "Ja79hWTRfBE =" с помощью онлайн-инструмента, и я успешно получил "123456".(Я использовал этот инструмент: http://tripledes.online -domain-tools.com / с входным текстом (шестнадцатеричный) "25aefd8564d17c11", функция: 3DES, режим: CBC, ключ (шестнадцатеричный) 17839778773fadde0066e4578710928988398877bb123789, iv: 00000000)

Ниже моего php-кода:

$key = "17839778773fadde0066e4578710928988398877bb123789";
$decData = openssl_decrypt(base64_decode('Ja79hWTRfBE='), 'DES-EDE3-CBC', $key, 0, "00000000");
var_dump($decData);

var_dump верните мне bool (false).

Что я делаю не так?

1 Ответ

0 голосов
/ 29 января 2019

я могу воспроизвести вашу цель с помощью следующего кода:

<?php

$data = "123456";
$method = "DES-EDE3";
$key = "17839778773fadde0066e4578710928988398877bb123789";
$options = 0;

// transform the key from hex to string
$key = pack("H*", $key);

// encrypt
$enc = openssl_encrypt($data, $method, $key, $options);
// decrypt
$dec = openssl_decrypt($enc, $method, $key, $options);

echo "plain: ".$data." encrypted: ".$enc." decrypted: ".$dec;
  • установить данные без base64
  • использовать метод DES-EDE3
  • преобразовать ваш ключ (от шестнадцатеричного до строкового)
...