热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

对称加密与非对称加密的区别_PHP安全:非对称加密

一次性付费进群,长期免费索取教程,没有付费教程。进微信群回复公众号:微信群;QQ群:460500587教程列表

一次性付费进群,长期免费索取教程,没有付费教程。

进微信群回复公众号:微信群;QQ群:460500587

 教程列表 见微信公众号底部菜单 |  本文底部有推荐书籍 

ce6e4ce55bb3848c5e8f501a1701cb82.png

微信公众号:计算机与网络安全

ID:Computer-network

对称加密算法在加密和解密时使用的是同一个密钥。与对称加密算法不同,非对称加密算法需要两个密钥——公开密钥(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;

?>

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】



推荐阅读
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 深入解析 OpenSSL 生成 SM2 证书:非对称加密技术与数字证书、数字签名的关联分析
    本文深入探讨了 OpenSSL 在生成 SM2 证书过程中的技术细节,重点分析了非对称加密技术在数字证书和数字签名中的应用。非对称加密通过使用公钥和私钥对数据进行加解密,确保了信息传输的安全性。公钥可以公开分发,用于加密数据或验证签名,而私钥则需严格保密,用于解密数据或生成签名。文章详细介绍了 OpenSSL 如何利用这些原理生成 SM2 证书,并讨论了其在实际应用中的安全性和有效性。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
author-avatar
極點創意文化
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有