PHP实现的DES加密解密类定义与用法示例

1. 什么是DES加密解密

DES是对称加密算法中的一种,即将明文按一定规则进行加密,生成密文,再按一定规则进行解密,还原明文的过程。在加密过程中,需要一个密钥,该密钥既用于加密,也用于解密。DES算法在数据加密标准中被广泛使用,其安全性得到了广泛认可。

2. PHP实现DES加密解密

2.1 安装openssl扩展

由于PHP中没有自带的DES加密解密函数,因此需要安装openssl扩展。在Linux系统下,可以通过以下命令进行安装。

sudo apt-get install openssl

sudo apt-get install php-openssl

2.2 DES加密解密类定义

下面给出了一个简单的DES加密解密类。该类包含了加密和解密两个方法,其中使用了openssl扩展实现。

class DesEncrypt

{

private $key;

private $method;

public function __construct($key, $method = 'DES-EDE3-CBC')

{

$this->key = $key;

$this->method = $method;

}

public function encrypt($data)

{

$ivSize = openssl_cipher_iv_length($this->method);

$iv = openssl_random_pseudo_bytes($ivSize);

$encrypted = openssl_encrypt($data, $this->method, $this->key, OPENSSL_RAW_DATA, $iv);

return base64_encode($iv . $encrypted);

}

public function decrypt($data)

{

$data = base64_decode($data);

$ivSize = openssl_cipher_iv_length($this->method);

$iv = substr($data, 0, $ivSize);

$encrypted = substr($data, $ivSize);

return openssl_decrypt($encrypted, $this->method, $this->key, OPENSSL_RAW_DATA, $iv);

}

}

2.3 使用示例

下面给出一个使用示例。

$key = '12345678901234567890123456789012'; //密钥

$data = 'hello world'; //明文

$des = new DesEncrypt($key);

//加密

$encrypted = $des->encrypt($data);

echo '加密后:' . $encrypted . '<br />';

//解密

$decrypted = $des->decrypt($encrypted);

echo '解密后:' . $decrypted . '<br />';

运行结果如下:

加密后:3P9B65vUR9GigG0qgDxOSdoubUx6jIQ9D2UPnljvErwml9JjzFpxjkBBV9p

解密后:hello world

后端开发标签