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

PHP函数库中的加密解密函数大揭秘

发布时间:2023-06-27 04:21:48

PHP是一门十分强大的编程语言,广泛应用于Web开发领域,而加密解密又是Web开发中的一个十分重要的环节,所以PHP中自然也涵盖了丰富的加密解密函数库。

下面我将包括常用的加密解密函数并加以详细的讲解,希望能对大家了解和使用PHP加密解密函数带来帮助。

1. md5()

md5是一种单向加密方式,可以用来对字符串进行加密。使用该函数可以将字符串加密成一段长度为32的不可逆字符串,常用来进行密码加密。

示例:

$string = 'password';

echo md5($string);

输出结果为:

5f4dcc3b5aa765d61d8327deb882cf99

2. sha1()

该函数和md5函数类似,也是一种单向加密方式,可以将字符串加密成一段160位的不可逆字符串,常用在数字签名和密码管理中。

示例:

$string = 'password';

echo sha1($string);

输出结果为:

5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

3. hash_algos()

该函数用于获取系统所支持的hash算法列表。

示例:

print_r(hash_algos());

输出结果为:

Array

(

    [0] => md4

    [1] => md5

    [2] => sha1

    [3] => sha224

    [4] => sha256

    [5] => sha384

    [6] => sha512

    [7] => ripemd128

    [8] => ripemd160

    [9] => ripemd256

    [10] => ripemd320

    [11] => whirlpool

    [12] => tiger128,3

    [13] => tiger160,3

    [14] => tiger192,3

    [15] => tiger128,4

    [16] => tiger160,4

    [17] => tiger192,4

    [18] => snefru

    [19] => snefru256

    [20] => gost

    [21] => adler32

    [22] => crc32

    [23] => crc32b

    [24] => fnv132

    [25] => fnv164

    [26] => joaat

    [27] => haval128,3

    [28] => haval160,3

    [29] => haval192,3

    [30] => haval224,3

    [31] => haval256,3

    [32] => haval128,4

    [33] => haval160,4

    [34] => haval192,4

    [35] => haval224,4

    [36] => haval256,4

    [37] => haval128,5

    [38] => haval160,5

    [39] => haval192,5

    [40] => haval224,5

    [41] => haval256,5

)

4. hash()

该函数用于对字符串进行任意hash加密。该函数接受3个参数:hash算法,需要加密的字符串,是否返回16进制的加密结果(默认为false,返回二进制的结果)。

示例:

$string = 'password';

echo hash('sha256', $string, false);

输出结果为:

a15267eb301b02fc25c20fe832e5eaffbe4c553b94f1069713cf3d8345477032

5. openssl_encrypt() 和 openssl_decrypt()

这两个函数是 openssl 库提供的加密解密函数,支持各种对称和非对称加密算法,使用时需要确保开启了 OpenSSL 扩展。

示例:

// 使用对称加密方式 AES-128-CBC 对数据进行加密

$plaintext = 'Hello World!';

$key = '1234567890123456'; // 密钥长度必须为 16 或 32 位

$iv = 'abcdefghijklmnopqrstuvwxyz123456'; // 向量长度 必须为 16 位

$ciphertext = openssl_encrypt($plaintext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);

// 解密数据

$decrypted_plaintext = openssl_decrypt($ciphertext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);

echo $ciphertext . "

"; // 输出加密后的数据

echo $decrypted_plaintext . "

"; // 输出解密后的数据

输出结果为:

????2????(???u!js??

Hello World!

6. base64_encode() 和 base64_decode()

这两个函数是常用的编码和解码函数,使用 base64对字符串进行编码后可以保证传输时不会被破坏。

示例:

$string = 'Hello World!';

$enc_string = base64_encode($string);

$dec_string = base64_decode($enc_string);

echo $enc_string . "

"; // 输出编码后的字符串

echo $dec_string . "

"; // 输出解码后的字符串

输出结果为:

SGVsbG8gV29ybGQh

Hello World!

小结:

PHP提供了丰富的加密解密函数库,开发者可以根据实际需求选择合适的加密方式来保证数据的安全性。同时,需要注意保护好自己的加密密钥,以免造成数据泄露。