ホームページ  >  記事  >  バックエンド開発  >  Mcrypt 暗号化を OpenSSL 暗号化に変換する方法: ステップバイステップ ガイド

Mcrypt 暗号化を OpenSSL 暗号化に変換する方法: ステップバイステップ ガイド

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-15 02:00:02658ブラウズ

How to Convert Mcrypt Encryption to OpenSSL Encryption: A Step-by-Step Guide

Converting Mcrypt to OpenSSL Encryption

Mcrypt, a legacy encryption library, has seen its retirement due to security vulnerabilities and the emergence of OpenSSL as the industry standard. While switching from Mcrypt to OpenSSL may seem daunting, it can be simplified by understanding the key differences and adopting appropriate strategies.

Cipher and Padding Disparity

Blowfish, the cipher you're using, requires data padding for encryption. OpenSSL employs PKCS#7 padding, while Mcrypt utilizes PKCS#5. PKCS#7 requires a minimum padding length of 1, while PKCS#5 accepts 0. This difference affects the encrypted results obtained from each library.

IV Usage

In ECB mode, which you're employing, an initialization vector (IV) is not required. However, this is not the case in other encryption modes. Ensure you set the IV length to 0 when using OpenSSL for ECB mode.

Encryption and Decryption

To decrypt data encrypted with Mcrypt using OpenSSL, manual padding with PKCS#7 is required prior to encryption. This ensures compatibility between the two libraries.

Example Code

The provided code demonstrates the key differences and proper padding techniques:

$key = "anotherpassword1";
$str = "does it work 12";

// Mcrypt padding
$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."\1", MCRYPT_MODE_ECB);

// OpenSSL padding
$enc = openssl_encrypt($str, 'bf-ecb', $key, true);

// Decrypt using both methods
$dec_mcrypt = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB);
$dec_openssl = openssl_decrypt($enc, 'bf-ecb', $key, true);

echo bin2hex($enc) . PHP_EOL;
var_dump($dec_mcrypt);
echo PHP_EOL;
var_dump($dec_openssl);

This code demonstrates successful encryption and decryption using both Mcrypt and OpenSSL, applying PKCS#7 padding for compatibility.

以上がMcrypt 暗号化を OpenSSL 暗号化に変換する方法: ステップバイステップ ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。