php 与或非,PHP 对称加密和非对称性加密

对称加密就是用同样的加密手段去解密.PHP中加密使用到了opensll系列函数,需要开启openssl扩展.

加密方法

function encrypt1($id)

{

$key = "1112121212121212121212";

$data['iv'] = 'fdakieli;njajdj1';

$data['value'] = openssl_encrypt($id, 'AES-256-CBC', $key, 0, $data['iv']);

$encrypt = base64_encode(json_encode($data));

return $encrypt;

}

解密方法

function decrypt2($encrypt)

{

$key = '1112121212121212121212';//解密钥匙

$encrypt = json_decode(base64_decode($encrypt), true);

#$iv = base64_decode($encrypt['iv']);

$iv = ($encrypt['iv']);

$id = openssl_decrypt($encrypt['value'], 'AES-256-CBC', $key, 0, $iv);

if ($id) {

return $id;

} else {

return 0;

}

}

非对称性加密:加密和解密用不同的秘钥.成为公钥和私钥,如果用公钥加密,那么就得用私钥解密;反过来,用私钥加密,就要用公钥解密

非对称性加密呢

$config = array(

"config" => "D:/phpStudy/PHPTutorial/Apache/conf/openssl.cnf",#这个路径是openssl.cnf文件的路径

"digest_alg" => "sha512",

"private_key_bits" => 1024,

"private_key_type" => OPENSSL_KEYTYPE_RSA,

);

// Create the private and public key

$res = openssl_pkey_new($config);

// Extract the private key from $res to $privKey

openssl_pkey_export($res, $privKey, NULL, $config);

echo "Private Key: ".$privKey. '
';

// Extract the public key from $res to $pubKey

$pubKey = openssl_pkey_get_details($res);

$pubKey = $pubKey["key"];

$data = '我是要加密的数据';

echo "Data: ".$data. '
';

// Encrypt the data to $encrypted using the public key

openssl_public_encrypt($data, $encrypted, $pubKey);

$encrypted = base64_encode($encrypted);

echo "Encrypted:加密后的数据 ".$encrypted. '
';

// Decrypt the data using the private key and store the results in $decrypted

$encrypted = base64_decode($encrypted);

openssl_private_decrypt($encrypted, $decrypted, $privKey);

echo "Decrypted:解密后的数据 ".$decrypted. '
';

需要注意的一点是, 私钥公钥的格式要正确,

a4f5cb84ced6

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值