对称加密对称加密是指使用相同的密钥进行加密与解密的加密方法。对称加密算法有很多,比如des、3des、aes等。在php中,使用mcrypt扩展库提供的函数可以实现对称加密。
示例代码如下:
$key = '123456789'; // 密钥$data = 'hello world'; // 待加密字符串$iv = mcrypt_create_iv(mcrypt_get_block_size(mcrypt_des, mcrypt_mode_cbc), mcrypt_rand);$cipher = mcrypt_encrypt(mcrypt_des, $key, $data, mcrypt_mode_cbc, $iv);echo base64_encode($cipher); // 输出加密后的字符串
上述代码中,通过mcrypt_encrypt函数进行des加密,并使用mcrypt_mode_cbc模式进行填充。$key是对称加密的密钥,$data是待加密的明文字符串,$iv是随机初始化向量。
解密示例代码如下:
$cipher = base64_decode('jnfxvc9e+rzr8ougm67q0w=='); // 加密后的字符串$key = '123456789'; // 密钥$iv = mcrypt_create_iv(mcrypt_get_block_size(mcrypt_des, mcrypt_mode_cbc), mcrypt_rand);$plain = mcrypt_decrypt(mcrypt_des, $key, $cipher, mcrypt_mode_cbc, $iv);echo $plain; // 输出解密后的字符串
非对称加密非对称加密算法需要使用一对密钥进行加密和解密,其中公钥可以公开,而私钥必须保密。常用的非对称加密算法包括rsa、dsa等。在php中,使用openssl扩展库提供的函数可以实现非对称加密。
示例代码如下:
$data = 'hello world'; // 待加密字符串$res = openssl_pkey_new(); // 生成密钥对openssl_pkey_export($res, $privatekey); // 获取私钥$publickey = openssl_pkey_get_details($res)["key"]; // 获取公钥openssl_public_encrypt($data, $cipher, $publickey); // 加密数据echo base64_encode($cipher); // 输出加密后的字符串
上述代码中,首先使用openssl_pkey_new函数生成一对公私钥,然后使用openssl_public_encrypt函数对数据进行加密。此时得到的$publickey可以公开,而$privatekey必须保密。
解密示例代码如下:
$cipher = base64_decode('rvnoene+p8ltlpuucq0wqfox2yuagxvy6fhlwpt0nqwzvqwvcdsnkw4c6yjmvnsmh4n5jdp18ri8x7cfqucdjg=='); // 加密后的字符串$privatekey = '-----begin private key-----...-----end private key-----'; // 私钥openssl_private_decrypt($cipher, $plain, $privatekey); // 解密数据echo $plain; // 输出解密后的字符串
上述代码中,首先使用openssl_pkey_export函数获取私钥的字符串形式,然后使用openssl_private_decrypt函数对加密后的数据进行解密,得到原始的明文。
总结:
通过上述介绍,我们了解到在php中,可以使用mcrypt和openssl扩展库来实现对称和非对称加密。对于应用场景不同的加密需求,我们可以灵活选择使用不同的加密算法和加密方式。当然,在实际的加密过程中,我们还需要注意密钥的保护和管理,以确保数据的安全性。
以上就是php中如何进行对称和非对称加密?的详细内容。
