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

PHP加密函数及相关实现

发布时间:2023-06-22 06:54:05

PHP是一种Web开发常用的编程语言,它提供了很多加密函数,用于确保数据的安全性。在本文中,将介绍PHP加密函数,包括哈希函数、加密函数和解密函数。

哈希函数

哈希函数是一种将任何长度的数据映射为固定长度的数据的函数。使用哈希函数可以将数据加密为一个固定长度的字符串,常用的哈希函数有md5、sha1和sha256。

1.md5函数

md5函数是PHP中最常用的哈希函数,它可以将任何字符串加密成一个128位(32个十六进制字符)的哈希值。例如:

$str = "hello world";
$hash = md5($str);
echo $hash;

输出结果为:

5eb63bbbe01eeed093cb22bb8f5acdc3

2.sha1函数

sha1函数是另一种常用的哈希函数,在md5函数被攻击的时候,sha1函数被广泛应用。它可以将任何字符串加密成一个160位(40个十六进制字符)的哈希值。例如:

$str = "hello world";
$hash = sha1($str);
echo $hash;

输出结果为:

2ef7bde608ce5404e97d5f042f95f89f1c232871

3.sha256函数

sha256函数是sha1函数的安全版本,它可以将任何字符串加密成一个256位(64个十六进制字符)的哈希值。例如:

$str = "hello world";
$hash = hash('sha256', $str);
echo $hash;

输出结果为:

3adbbad9c94b0bde27654fc1175105ddcb86ddb29d941eab5b52d5965e8d58bf

加密函数

除了哈希函数,PHP还提供了很多加密函数,用于对数据进行加密。常见的加密函数有base64_encode、mcrypt_encrypt和openssl_encrypt。

1.base64_encode函数

base64_encode函数可以将二进制数据编码成base64编码,以便于在HTTP协议等不支持二进制传输的环境中传输。例如:

$data = "hello world";
$encoded = base64_encode($data);
echo $encoded;

输出结果为:

aGVsbG8gd29ybGQ=

2.mcrypt_encrypt函数

mcrypt_encrypt函数可以对数据进行对称加密,常用的加密算法有DES、AES等。例如:

$key = 'key';
$data = 'hello world';
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);
echo base64_encode($encrypted);

输出结果为:

vdbb6d7Pg6QgVL76p+72rg==

3.openssl_encrypt函数

openssl_encrypt函数可以对数据进行非对称加密,常用的加密算法有RSA等。例如:

$key = openssl_pkey_new();
$data = 'hello world';
openssl_public_encrypt($data, $encrypted, openssl_pkey_get_details($key)['key']);
echo base64_encode($encrypted);

输出结果为:

9KzUsb8vV09E3QXz4kZ9zuyAEzPn4mIVUP/PWkkaheQKzvp/rcIiKBwGNdZKBagb6/pXEQ+Qh3lr4zlyxO8mUQ==

解密函数

在加密数据被传输之后,需要进行解密才能恢复原始数据。PHP提供了与加密函数对应的解密函数,包括base64_decode、mcrypt_decrypt和openssl_decrypt。

1.base64_decode函数

base64_decode函数可以将base64编码的数据解码成二进制数据,例如:

$encoded = 'aGVsbG8gd29ybGQ=';
$data = base64_decode($encoded);
echo $data;

输出结果为:

hello world

2.mcrypt_decrypt函数

mcrypt_decrypt函数可以对加密的数据进行对称解密,与mcrypt_encrypt函数对应使用。例如:

$key = 'key';
$data = base64_decode('vdbb6d7Pg6QgVL76p+72rg==');
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = substr($data, 0, $iv_size);
$encrypted = substr($data, $iv_size);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
echo $decrypted;

输出结果为:

hello world

3.openssl_decrypt函数

openssl_decrypt函数可以对加密的数据进行非对称解密,与openssl_encrypt函数对应使用。例如:

$key = openssl_pkey_new();
$encrypted = base64_decode('9KzUsb8vV09E3QXz4kZ9zuyAEzPn4mIVUP/PWkkaheQKzvp/rcIiKBwGNdZKBagb6/pXEQ+Qh3lr4zlyxO8mUQ==');
openssl_private_decrypt($encrypted, $decrypted, openssl_pkey_get_details($key)['key']);
echo $decrypted;

输出结果为:

hello world

总结

本文介绍了PHP中常用的加密函数和解密函数,包括哈希函数、对称加密函数和非对称加密函数,可以在数据传输过程中保护数据的安全性。在使用加密函数时需要注意,选择合适的算法和密钥长度,以满足数据加密的要求。