Я конвертирую MCRYPT ECB, чтобы открыть SSL ECB
MCRYPT
public function encrypt($input) {
$vi = base64_decode($this->iv);
$key = mb_convert_encoding($this->key, "UTF8");
$key = md5($key,true);
$key = $this->processKey($key);
$input = $this->addPKCS7Padding($input);
$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
mcrypt_generic_init($td, $key, $vi);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);
return $data;
}
private function processKey($key) {
// Complete the key
$key_add = 24 - strlen($key);
$key .= substr($key, 0, $key_add);
// Padding the text
$text_add = strlen($text)%8;
for ($i=$text_add; $i<8; $i++){
$text .= chr(8-$text_add);
}
return $key;
}
private function addPKCS7Padding($source) {
$block = mcrypt_get_block_size('tripledes', 'cbc');
$pad = $block - (strlen($source) % $block);
if ($pad <= $block) {
$char = chr($pad);
$source .= str_repeat($char, $pad);
}
return $source;
}
из здесь
mcrypt_module_open ( MCRYPT_3DES, '', 'ecb', '' ) == "DES-EDE3"
из старого примера
1, md5 ключ и преобразование в utf 8
2, добавление PKCS7Padding openssl уже выполняет заполнение PKCS # 7 (поэтому я не добавляю)
перед его функцией my
function encry_it($data,$cipher_method,$secret_key ,$iv){
$secret_key = md5(utf8_encode($secret_key), true);
$result = openssl_encrypt($data, $cipher_method, $secret_key, $options=OPENSSL_RAW_DATA);
return base64_encode($result);
}
зашифровать результат разные Я не могу добавить IV к функции openssl, так как из-за ее ошибки этот DES-EDE3 ожидает 0 IV из-за этого, поэтому зачем шифровать другой результат?
Спасибо, надеюсь, разработчик высокого класса может помочь мне, спасибо