安全矩阵

 找回密码
 立即注册
搜索
查看: 3778|回复: 0

PHP安全:非对称加密

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2020-10-8 19:22:45 | 显示全部楼层 |阅读模式
原文链接: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进行加密解密如下。

<?php
$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;
?>


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 07:28 , Processed in 0.013212 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表