热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

密码学——公钥与私钥(非对称加密)

转载处:http:www.cnblogs.comdarksirp3704198.html这里不讨论数学原理,只说明其实现和传输过程。我们先假定一个数据的发送方和一个数据的接收方(就叫小红和小

转载处:http://www.cnblogs.com/darksir/p/3704198.html大笑

这里不讨论数学原理,只说明其实现和传输过程。

我们先假定一个数据的发送方和一个数据的接收方(就叫小红和小明好了!)

发送方小红拥有一对密钥:一个公钥和一个私钥。

接收方小明也同样拥有一对密钥:一个公钥和私钥。

注意:这四把钥匙(密码)各不相同!

公钥的概念:公钥是可以在网络上传输的,也就是说接收发送双方都可以知道彼此的公钥,当然,如果你用网络嗅探等技术,也可以在网络上嗅探的公钥的内容,但你仅有公钥是无法解密文件的。

私钥的概念:私钥是用户各自私有的,不会在网络中传输(也就是说不需要接收发送双方彼此交换此密钥),这就保证了此密码的安全性,黑客无法在网络中嗅探到该密钥,而是被严格的储存在用户自己的主机中。

公钥和私钥的关系:公钥加密的数据只有私钥可以解锁,私钥加密的数据只有公钥能解锁,而两者都无法自己解锁自己!这一点是保证数据无法被窃取的关键!而公钥和私钥的唯一区别也接就是公钥会互相交换在网络上传输,而私钥自己保留不在网络上传输。

下面介绍数据加密传出过程(如下图):

想象以下场景:

发送方小红要向接收方小明发送一封情书(好吧,为了配合下面的图我只能编个女追男的故事,让广大吊丝意淫下!),但是小红呢,女孩子嘛,比较害羞,怕某些别有用心的人偷看到他写给心上人的悄悄话,就利用了加密技术,让网络上无聊的人们无法偷窥到它的情书。

第一步:小红用自己的私钥给情书上了第一道锁,这个私钥只有她自己知道。

第二步:其实两人之前相互了解过(通信过),这个时候已经都拥有的对方的公钥,所以小红又在第一步的基础上用小明的公钥给情书加了第二把锁。

第三步:这个时候小红这边就已经把情书加密好了,她很满意,因为已经万无一失了!她把加了两把锁的情书发到网络上传送给小明,这个时候网络上的黑客们也许已经在小红和小明初次幽会并交换公钥的时候窃取到了两人的公钥。但请想想小红的加锁过程,最外面一道锁(第二道锁)是用小明的公钥加密的,也就是说要用小明的私钥来解密才可以打开,但黑客最多只能拥有两人的公钥,而无法获得小明的私钥,这就有效的避免的数据被窃取,即使黑客截获了情书,也只能看到一堆杂乱无章的乱码,而无法真正得知情书的内容。

第四步:小明顺利的接收到了小红的情书,利用自己的私钥,成功解开的外层的锁。(外层的锁是小红用小明的公钥锁的!)

第五步:小明又拿出了小红的公钥,解开了情书内层的锁。这时候就可确定情书确实是小红发的,而不是其他人伪造来忽悠自己的。(内层的锁是小红用自己的私钥锁的!)

最终,小明成功的看到了小红的情书,心中暗爽:吊到妹纸的感觉真好!

注:整个过程中利用两把锁将数据的传输过程严格加密,数据在传输过程中无法被解密,除非黑客入侵了接收方(小明)的电脑,窃取了他的私钥。所以,此种方法可以保证在传输过程中是严格保密的,即使收发双方交换的公钥被嗅探到也无法揭秘。当然,没有绝对的安全,如前面所说,直接被入侵了电脑那就无存在什么秘密了~


推荐阅读
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
author-avatar
waxw
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有