4种加密解密方式(php)
第一种:openssl_encrypt($data, $method, $password, $options, $iv)
- $data 加密明文。
- $method 加密方法(DES-ECB,DES-CBC,DES-CTR,DES-OFB,DES-CFB),密码学方式可用openssl_get_cipher_methods() 获取有效密码方式列表。
- $passwd 加密密钥[密码]。
- $options 数据格式选项(可选),格式有:OPENSSL_RAW_DATA(1) 、 OPENSSL_ZERO_PADDING(2),OPENSSL_NO_PADDING(3),0。
- $iv 密初始化向量(可选)。
注意:如果method为DES-ECB,则method为DES−ECB,则iv无需填写
<?php
public function opensslDecrypt($data, $type)
{
if ($type) {
$decrypted = openssl_encrypt($data['data'],$data['method'],$data['password'],$data['option']);
return $decrypted;
} else {
$encrypted = openssl_decrypt($data['data'],$data['method'],$data['password'],$data['option']);
return $encrypted;
}
}
public function test()
{
//加密:"00FpHqU34MmwGf7M4XJ2WpTRAStVryrH/ESTpKWyDcGTAoS8XG1Yo3icVIUF4bPX"
echo $this->opensslDecrypt(['data'=>'123456北京欢迎你,为你开天辟地','method'=>'DES-ECB','password'=>'123456','option'=>0],2);
//解密:"123456北京欢迎你,为你开天辟地"
echo $this->opensslDecrypt(['data'=>'00FpHqU34MmwGf7M4XJ2WpTRAStVryrH/ESTpKWyDcGTAoS8XG1Yo3icVIUF4bPX','method'=>'DES-ECB','password'=>'123456','option'=>0],0);
}
?>
第二种:使用函数
<?php
public function test()
{
//加密:"WHaTuJSjByPsfwGx30mBxFE3IBCxnG2ubIWbxzTtbAmt8IpdixFCW0g9r"
echo $this->encryption('123456北京欢迎你,为你开天辟地','lpl');
echo "<br>";
//解密:"123456北京欢迎你,为你开天辟地"
echo $this->unencryption('MXg5d2dscUFSVURaOWUxU1pSUmU5VjJuMGUxZU5UaWVuVTJKZ2UxZU5SQ2ViVUY1UGYxaU1SQWVMMnlvUw%3D%3D','lpl');
}
//加密函数
public function encryption($txt,$key='')
{
$txt = $txt.$key;
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
$nh = rand(0,64);
$ch = $chars[$nh];
$mdKey = md5($key.$ch);
$mdKey = substr($mdKey,$nh%8, $nh%8+7);
$txt = base64_encode($txt);
$tmp = '';
$i=0;$j