pem加密php,PHP安全:非对称加密

原标题:PHP安全:非对称加密

对称加密算法在加密和解密时使用的是同一个密钥。与对称加密算法不同,非对称加密算法需要两个密钥——公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)进行加密和解密。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

在非对称加密中使用的主要算法有RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。RSA是目前最有影响力的公钥加密算法之一,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO组织推荐为公钥数据加密标准。

#生成私钥

openssl genrsa -out rsa_private_key.pem 1024

#生成公钥

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

在PHP中用RSA进行加密解密如下。

$private_key_file = "rsa_private_key.pem";

$public_key_file = "rsa_public_key.pem";

$data = "Hello World";

if (file_exists($private_key_file)) {

$private_key_file = file_get_contents($private_key_file);

} else {

die('private key not exists');

}

if (file_exists($public_key_file)) {

$public_key = file_get_contents($public_key_file);

} else {

die('public key not exists');

}

$encrypted = $decrypted = "";

openssl_private_encrypt($data, $encrypted, $private_key); //使用私钥加密数据

openssl_public_decrypt($encrypted, $decrypted, $public_key);

//使用公钥界面

echo $decrypted;

$encrypted = $decrypted = "";

openssl_public_encrypt($data, $encrypted, $public_key);//使用公钥进行加密

openssl_private_decrypt($data, $decrypted, $private_key); //使用私钥进行加密

echo $decrypted;返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值