PHP加密解密函数实现方式
发布时间:2023-06-21 18:01:33
PHP加密解密函数的实现方式很多,可以使用各种加密算法,例如对称加密算法(如AES、DES、3DES)和非对称加密算法(如RSA、DSA)。在本篇文章中,我们主要介绍PHP常见的加密解密函数实现方式。
一、对称加密算法
1. AES加密解密函数
AES加密解密函数是PHP中常用的对称加密函数之一,可以使用mcrypt库实现。具体实现步骤如下:
(1)加密函数
function aes_encrypt($data, $key){
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);
return base64_encode($iv.$encrypted);
}
(2)解密函数
function aes_decrypt($data, $key){
$data = base64_decode($data);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
$encrypted = substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
return rtrim($decrypted, "\0");
}
2. DES加密解密函数
DES加密解密函数是另一个常见的对称加密函数,可以使用mcrypt库实现。具体实现步骤如下:
(1)加密函数
function des_encrypt($data, $key){
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB), MCRYPT_RAND);
$encrypted = mcrypt_encrypt(MCRYPT_DES, $key, $data, MCRYPT_MODE_ECB, $iv);
return base64_encode($encrypted);
}
(2)解密函数
function des_decrypt($data, $key){
$encrypted = base64_decode($data);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB), MCRYPT_RAND);
$decrypted = mcrypt_decrypt(MCRYPT_DES, $key, $encrypted, MCRYPT_MODE_ECB, $iv);
return rtrim($decrypted, "\0");
}
二、非对称加密算法
1. RSA加密解密函数
RSA加密解密函数是PHP中常用的非对称加密函数之一,可以使用openssl库实现。具体实现步骤如下:
(1)生成RSA公私钥
function rsa_genkey(){
$res = openssl_pkey_new(array(
'private_key_bits' => 1024,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
));
openssl_pkey_export($res, $private_key);
$public_key = openssl_pkey_get_details($res)['key'];
return array(
'public' => $public_key,
'private' => $private_key,
);
}
(2)加密函数
function rsa_encrypt($data, $public_key){
openssl_public_encrypt($data, $encrypted, $public_key);
return base64_encode($encrypted);
}
(3)解密函数
function rsa_decrypt($data, $private_key){
openssl_private_decrypt(base64_decode($data), $decrypted, $private_key);
return $decrypted;
}
2. DSA加密解密函数
DSA加密解密函数是另一个常见的非对称加密函数,可以使用openssl库实现。具体实现步骤如下:
(1)生成DSA公私钥
function dsa_genkey(){
$res = openssl_pkey_new(array(
'private_key_bits' => 1024,
'private_key_type' => OPENSSL_KEYTYPE_DSA,
));
openssl_pkey_export($res, $private_key);
$public_key = openssl_pkey_get_details($res)['key'];
return array(
'public' => $public_key,
'private' => $private_key,
);
}
(2)加密函数
function dsa_sign($data, $private_key){
openssl_sign($data, $signature, $private_key);
return base64_encode($signature);
}
(3)解密函数
function dsa_verify($data, $signature, $public_key){
return openssl_verify($data, base64_decode($signature), $public_key);
}
以上是PHP常见的加密解密函数实现方式,可以根据需要选择适合自己的加密解密算法和库。在实际使用中,为了保证加密解密效果和安全性,还需要注意一些细节问题,例如密钥的管理、加密/解密数据的转换等。
