DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法。
在PHP里面官方有两种方式可以直接使用des加密。一个是使用openssl_encrypt(),另一种方式是使用mcrypt_encrypt().
openssl_encrypt()方式
string openssl_encrypt ( string $data , string $method , string $password [, int $options = 0 [, string $iv = "" ]] )
iv是一个长度为8的字符串
示例代码: <?php $str = ‘hello’; $mod = ‘des-cfb’; $password = ‘12345678’; $iv = ‘dljldjdf’; echo openssl_encrypt($str, $mod, $password,0,$iv);
结果输出:
SuowP9w=
注意:这个结果并不是单纯的就des加密之后的数据,有经过base64进行编码,相当于 base64_encode(des_encrypt($str))
,PHP具体为什么要这么做,我也还没看懂,有懂的留言让我学习下。
单纯的des加密出来的数据是这种 DB�
, 使用base64编码之后显示的数据比较优雅哈哈。如果不需要使用base64加密,可以指定第4个参数为1
$mod 可填的值可以通过函数来获取
openssl_get_cipher_methods()
解密函数:
openssl_decrypt();
mcrypt_encrypt()
示例代码:
// des cfb 秘钥长度
$key_length = mcrypt_get_key_size(MCRYPT_DES,MCRYPT_MODE_CFB);
// 秘钥
$key = 12345678;
// 创建IV
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_CFB),MCRYPT_RAND);
// 使用CFB模式加密
$data = mcrypt_encrypt(MCRYPT_DES, $key, 'hello', MCRYPT_MODE_CFB, $iv);
echo $data;
echo '<br>';
echo base64_encode($data);
结果(浏览器输出结果):
DB�
f0RCGuo=
解密函数:
mcrypt_decrypt();