PHP7 OpenSSL DES-EDE-CBC加解密

介绍

PHP7 OpenSSL库中提供了DES-EDE-CBC算法的加密与解密实现。DES-EDE是“Triple DES”即“三重DES”的简称,即将3个DES算法串在一起执行。

DES-EDE-CBC加密

步骤1:生成密钥

生成一个24字节的密钥,可以通过以下方式生成:

$key = openssl_random_pseudo_bytes(24);

步骤2:加密数据

调用openssl_encrypt()函数使用DES-EDE-CBC算法对数据进行加密,具体参数如下:

$string = 'this is a secret message';

$cipher_method = 'des-ede3-cbc';

$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($cipher_method));

$encrypted = openssl_encrypt($string, $cipher_method, $key, OPENSSL_RAW_DATA, $iv);

其中,$cipher_method参数表示加密方式,$iv参数表示初始化向量。注意:$iv参数必须是随机生成的,而且不能与对称加密的密钥相同。

步骤3:转换为16进制字符串

将加密后的二进制数据转换为16进制字符串,可以使用bin2hex()函数进行转换:

$hex = bin2hex($encrypted);

步骤4:输出结果

将16进制字符串输出,可以使用echo语句或者其他的方式进行输出:

echo $hex;

DES-EDE-CBC解密

步骤1:转换为二进制数据

将16进制字符串转换为二进制数据,可以使用hex2bin()函数进行转换:

$binary = hex2bin($hex);

步骤2:解密数据

调用openssl_decrypt()函数使用DES-EDE-CBC算法对数据进行解密,具体参数如下:

$decrypted = openssl_decrypt($binary, $cipher_method, $key, OPENSSL_RAW_DATA, $iv);

步骤3:输出结果

将解密后的数据输出,可以使用echo语句或者其他的方式进行输出:

echo $decrypted;

完整代码示例

下面是使用DES-EDE-CBC算法进行加密与解密的完整代码示例:

$key = openssl_random_pseudo_bytes(24);

$string = 'this is a secret message';

$cipher_method = 'des-ede3-cbc';

$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($cipher_method));

$encrypted = openssl_encrypt($string, $cipher_method, $key, OPENSSL_RAW_DATA, $iv);

$hex = bin2hex($encrypted);

echo 'Encrypted: '.$hex."\n";

$binary = hex2bin($hex);

$decrypted = openssl_decrypt($binary, $cipher_method, $key, OPENSSL_RAW_DATA, $iv);

echo 'Decrypted: '.$decrypted."\n";

其中,$key变量表示密钥,$string变量表示待加密的字符串,$cipher_method变量表示加密算法,$iv变量表示初始化向量。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签