`
jef
  • 浏览: 118045 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

公钥,私钥,SSL

阅读更多

转载一篇文章,比较形象的说明了这些概念。

--------------------------------------------------------------------------------------------

 

一,公钥私钥
1,公钥和私钥成对出现
2,公开的密钥叫公钥,只有自己知道的叫私钥
3,用公钥加密的数据只有对应的私钥可以解密
4,用私钥加密的数据只有对应的公钥可以解密
5,如果可以用公钥解密,则必然是对应的私钥加的密
6,如果可以用私钥解密,则必然是对应的公钥加的密
明白了?

 

假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们,然后我告诉大家,1是我的公钥。

 

我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密。这样我就可以保护数据了。

 

我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。

 

现在我们知道用公钥加密,然后用私钥来解密,就可以解决安全传输的问题了。如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知道我的公钥是1,那么这种加密有什么用处呢?

 

但是我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他解密看是不是c。 他用我的公钥1解密,发现果然是c。这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实 是我发的东西。这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名。

 

好,我们复习一下:
1,公钥私钥成对出现
2,私钥只有我知道
3,大家可以用我的公钥给我发加密的信了
4,大家用我的公钥解密信的内容,看看能不能解开,能解开,说明是经过我的私钥加密了,就可以确认确实是我发的了。

 

总结一下结论:
1,用公钥加密数据,用私钥来解密数据
2,用私钥加密数据(数字签名),用公钥来验证数字签名。

 

在实际的使用中,公钥不会单独出现,总是以数字证书的方式出现,这样是为了公钥的安全性和有效性。


二,SSL
我和我得好朋友x,要进行安全的通信。这种通信可以是QQ聊天,很频繁的。用我的公钥加密数据就不行了,因为:
1,我的好朋友x没有公私钥对,我怎么给他发加密的消息啊? (注:实际情况中,可以双方都有公私钥对)
2,用公私钥加密运算很费时间,很慢,影响QQ效果。

 

好了,好朋友x,找了一个数字3,用我的公钥1,加密后发给我,说,我们以后就用这个数字来加密信息吧。我解开后,得到了数字3。这样,只有我们两个人知 道这个秘密的数字3,别的人都不知道,因为他们既不知x挑了一个什么数字,加密后的内容他们也无法解开,我们把这个秘密的数字叫做会话密钥。

 

然后,我们选择一种对称密钥算法,比如DES,(对称算法是说,加密过程和解密过程是对称的,用一个密钥加密,可以用同一个密钥解密。使用公私钥的算法是非对称加密算法),来加密我们之间的通信内容。别人因为不知道3是我们的会话密钥,因而无法解密。

 

好,复习一下:
1,SSL实现安全的通信
2,通信双方使用一方或者双方的公钥来传递和约定会话密钥 (这个过程叫做握手)
3,双方使用会话密钥,来加密双方的通信内容

 

上面说的是原理。大家可能觉得比较复杂了,实际使用中,比这还要复杂。不过庆幸的是,好心的先行者们在操作系统或者相关的软件中实现了这层(Layer),并且起了一个难听的名字叫做SSL,(Secure Socket Layer)。

分享到:
评论
1 楼 上帝卖糕的 2009-09-15  
对这些,只有大学里一堂课的印象~~现在总算仔细了解了一下!

相关推荐

    RSA生成公钥私钥和使用公钥私钥加密解密demo

    本示例提供了一个RSA加密工具类,用于生成公钥和私钥,并使用它们进行加密和解密操作,这对于保护数据库中的敏感信息,如密码,是非常必要的。 1. **RSA算法原理**: RSA算法基于数论中的大数因子分解难题。其基本...

    数字证书原理,公钥私钥加密原理

    1. SSL/TLS协议:SSL(安全套接层)和TLS(传输层安全性)是用于在互联网上进行安全通信的协议,它们利用数字证书和公钥私钥技术为网站和用户之间的数据传输提供加密和身份验证。 2. 数字签名:利用私钥进行签名,...

    公钥私钥加密解密数字证书数字签名详解.docx

    ### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...

    Windows版 生成RSA公钥和私钥的工具

    本文将详细讲解如何在Windows操作系统上利用OpenSSL工具生成RSA公钥和私钥。 首先,OpenSSL是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用...

    RSA.zip_公钥私钥

    公钥和私钥是RSA算法的核心概念,它们是一对数学上相关的密钥,用于保障通信的安全性。 1. **RSA算法原理**: RSA的名字来源于其发明者Ron Rivest、Adi Shamir和Leonard Adleman。该算法基于大数因子分解的困难性...

    公钥加密私钥解密&私钥加密公钥解密

    **应用场景**:公钥加密私钥解密广泛应用于数字证书、电子邮件加密、安全套接层协议(SSL/TLS)等场景中。 #### 二、私钥加密公钥解密——实际为私钥签名公钥验证 私钥加密公钥解密这一说法并不准确,正确的表述...

    openssl工具(RSA网络通信加密,需要的,生成公钥私钥)

    "openssl工具(RSA网络通信加密,需要的,生成公钥私钥)" 这个标题提到了两个关键概念,一个是`openssl`工具,另一个是`RSA`加密算法,主要用于在网络通信中生成公钥和私钥对。 **`openssl`工具:** `openssl`是...

    c#公钥加密私钥解密和验证

    在IT领域,尤其是在网络安全和数据保护方面,公钥加密和私钥解密是核心概念,主要应用于SSL/TLS协议、SSH、PGP等。在C#编程中,我们可以使用.NET框架提供的System.Security.Cryptography命名空间来实现这些功能。...

    RSA加密 公钥、密钥生成工具

    在提供的"RSA加密 公钥、密钥生成工具"中,用户可以方便地生成RSA公钥和私钥对,而无需手动执行上述数学步骤。RsaKeys.exe文件很可能是一个执行程序,运行后会提供一个用户界面,允许用户生成并管理他们的RSA密钥对...

    证书和私钥生成demo-(C++)VS开发

    本文将详细讲解如何使用C++在Visual Studio 2017环境下生成证书和私钥,并探讨公钥和私钥的概念及其作用。 首先,我们需要理解证书和私钥的基本概念。在公钥基础设施(PKI)中,证书是一种数字文档,用于证明一个...

    支付宝获取公钥和私钥工具

    在IT行业中,尤其是在支付系统和安全通信领域,公钥和私钥是至关重要的概念。公钥和私钥机制是基于非对称加密算法,广泛应用于数据加密、数字签名以及身份验证等方面。支付宝作为国内领先的支付平台,也采用了这种...

    Win64OpenSSL-1_1_0f_用于生成RSA的公钥私钥对,并可加解密处理

    这个版本的OpenSSL支持RSA密钥生成,是生成和管理RSA公钥和私钥对的重要工具。 **RSA密钥生成** 生成RSA密钥对通常包括以下步骤: 1. **选择两个大素数**:随机选取两个足够大的素数p和q,它们的长度通常以位数...

    Windows安装Openssl并使用Openss生成公钥私钥

    1. OpenSSL官网 ...2. Windows安装方法 OpenSSL官网没有提供windows版本的安装包,可以选择其他开源平台提供的工具。...以该工具为例,安装步骤和使用方法如下: 2.1 选择32位或者64位合适的版本下载,例如Win64OpenSSL_...

    Java加密算法-公钥加密私钥解密

    尽管公钥加密提供了一种强大的安全保障,但在实际应用中,实现完整的客户端-服务器交互可能涉及到证书管理、数字签名、以及SSL/TLS协议等复杂环节。此外,公钥加密的效率较低,不适合大量数据的加密。 8. **示例...

    支付宝生成私钥公钥工具

    在使用支付宝进行支付接口开发时,开发者需要生成一对密钥——私钥(Private Key)和公钥(Public Key),这就是“支付宝生成私钥公钥工具”所涉及的核心概念。 私钥是用于解密和签名的密钥,必须严格保密,只有...

    AES算法的javademo(秘钥采用RSA公私钥加解密)

    6. 生成公私钥对:使用`KeyPairGenerator`生成RSA的公钥和私钥。 7. 公钥加密AES密钥:使用公钥对AES密钥进行加密,得到的加密密钥可以安全地在网络上传输。 8. 私钥解密AES密钥:接收方使用私钥对加密的AES密钥进行...

    openssl创建ca 公私密钥 证书

    在IT行业中,加密和安全通信是至关重要的环节,OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现工具包,同时也包含了用于创建数字证书、管理CA(证书颁发机构)以及处理公钥基础设施(PKI)的相关工具。...

    openssl_支付宝私钥公钥生成.rar

    在“openssl_支付宝私钥公钥生成.rar”这个压缩包中,我们关注的是如何使用`openssl`来生成支付宝所需的公钥和私钥。 首先,理解公钥和私钥的概念。在公钥加密体制(如RSA)中,一对密钥由公钥和私钥组成。公钥是...

    nginx配置https的ssl 私钥证书

    在Nginx中配置HTTPS,我们需要准备两个关键文件:SSL证书(公钥)和私钥文件。 1. **获取SSL证书** 你可以从权威的证书颁发机构(CA,如Let's Encrypt、GlobalSign等)申请免费或付费的SSL证书。或者,为了测试...

    RSA 公钥加密-私钥解密

    公钥是可以公开分享的,而私钥则需要被严密保护,只有拥有私钥的人才能解密由对应公钥加密的信息。 RSA算法的核心原理基于数论中的两个大素数的乘积难以分解的难题,即大整数因式分解问题。两个大素数相乘得到的...

Global site tag (gtag.js) - Google Analytics