欢迎访问宙启技术站
智能推送

PHP加密函数:用PHP函数进行加密和解密操作;

发布时间:2023-06-19 15:09:22

在Web开发中,对于敏感信息一般需要进行加密传输或者存储。PHP是一种非常常用的Web开发语言,在PHP中,提供了大量的加密函数,方便开发者进行数据加密操作,同时也提供了对应的解密函数,方便开发者进行解密操作。下面我们来看一些PHP加密函数的使用方法和示例。

一、哈希函数

哈希函数是将任意长度的消息(明文)压缩成固定长度的消息摘要(密文)的函数,通常用于防篡改和数字签名。常用的哈希函数包括MD5、SHA1、SHA224、SHA256、SHA384、SHA512等。

1. MD5:使用md5() 函数进行加密,使用 hash_equals() 函数进行比较。

示例:

//加密

$plaintext = '密码';

$hash = md5($plaintext);

echo $hash;

//比较

$userInput = '密码';

if(hash_equals(md5($userInput), $hash)){

    echo '密码正确';

}

2. SHA1:使用sha1() 函数进行加密,使用 hash_equals() 函数进行比较。

示例:

//加密

$plaintext = '密码';

$hash = sha1($plaintext);

echo $hash;

//比较

$userInput = '密码';

if(hash_equals(sha1($userInput), $hash)){

    echo '密码正确';

}

二、对称加密函数

对称加密算法是加密和解密使用相同密钥的加密算法,常用的对称加密算法有DES、3DES、AES等。在PHP中,提供了mcrypt_encrypt() 和 mcrypt_decrypt() 函数完成对称加密和解密。

1. 3DES加密:使用mcrypt_encrypt() 函数进行加密,使用 mcrypt_decrypt() 函数进行解密。

示例:

//加密

$plaintext = '密码';

$key = '123456789012345678901234';

$iv = "12345678";

$ciphertext = mcrypt_encrypt(MCRYPT_TRIPLEDES, $key, $plaintext, MCRYPT_MODE_CBC, $iv);

echo base64_encode($ciphertext);

//解密

$ciphertext = base64_decode($ciphertext);

$plaintext = mcrypt_decrypt(MCRYPT_TRIPLEDES, $key, $ciphertext, MCRYPT_MODE_CBC, $iv);

echo $plaintext;

2. AES加密:使用mcrypt_encrypt() 函数进行加密,使用 mcrypt_decrypt() 函数进行解密。

示例:

//加密

$plaintext = '密码';

$key = '1234567890123456';

$iv = "1234567890123456";

$method = 'aes-128-cbc';

$ciphertext = mcrypt_encrypt($method, $key, $plaintext, MCRYPT_MODE_CBC, $iv);

echo base64_encode($ciphertext);

//解密

$ciphertext = base64_decode($ciphertext);

$plaintext = mcrypt_decrypt($method, $key, $ciphertext, MCRYPT_MODE_CBC, $iv);

echo $plaintext;

三、非对称加密函数

非对称加密算法使用一对密钥,分为公钥和私钥,其中公钥用于加密,私钥用于解密。常用的非对称加密算法有RSA、DSA等。在PHP中,提供了openssl_public_encrypt() 和 openssl_private_decrypt() 函数完成非对称加密和解密。

1. RSA加密:使用openssl_public_encrypt() 函数进行加密,使用 openssl_private_decrypt() 函数进行解密。

示例:

//加密

$plaintext = '密码';

$fp = fopen(dirname(__FILE__).'/public.key', 'r');

$pub_key = fread($fp, 65536);

fclose($fp);

$encrypted = '';

openssl_public_encrypt($plaintext, $encrypted, $pub_key);

echo base64_encode($encrypted);

//解密

$fp = fopen(dirname(__FILE__).'/private.key', 'r');

$priv_key = fread($fp, 65536);

fclose($fp);

$decrypted = '';

openssl_private_decrypt(base64_decode($encrypted), $decrypted, $priv_key);

echo $decrypted;

2. DSA签名:使用openssl_sign() 函数进行签名,使用 openssl_verify() 函数进行验证。

示例:

//签名

$plaintext = '密码';

$fp = fopen(dirname(__FILE__).'/private.key', 'r');

$priv_key = fread($fp, 65536);

fclose($fp);

$signature = '';

openssl_sign($plaintext, $signature, $priv_key, OPENSSL_ALGO_DSS1);

echo base64_encode($signature);

//验证

$fp = fopen(dirname(__FILE__).'/public.key', 'r');

$pub_key = fread($fp, 65536);

fclose($fp);

if(openssl_verify($plaintext, base64_decode($signature), $pub_key, OPENSSL_ALGO_DSS1)){

    echo '验签成功!';

}else{

    echo '验签失败!';

}

以上是PHP中常用的加密函数的使用方法和示例,需要根据实际需求进行选择和配置。在Web开发中,数据加密是非常重要的,尤其是涉及到用户隐私信息的时候,安全问题必须得到重视,开发者应该根据具体情况进行加密方案的选择和完善,以保证用户信息安全。