公钥,私钥和数字签名

一、公钥加密 
假设一下,我找了两个数字,一个是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. 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

  非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。

  基于公开密钥的加密过程

  比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

  1. Bob将他的公开密钥传送给Alice。
  2. Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
  3. Bob用他的私人密钥解密Alice的消息。

  上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。

  基于公开密钥的认证过程

  身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。

  还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用自己的私钥对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身份认证的过程如下:

  1. Alice用她的私人密钥对文件加密,从而对文件签名。
  2. Alice将签名的文件传送给Bob。
  3. Bob用Alice的公钥解密文件,从而验证签名。

  上面的过程可以用下图表示,Alice使用自己的私钥加密,Bob用Alice的公钥进行解密。

RSA算法

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

 1 我也刚学,有这样一个例子给你看看,很有用:
 2 RSA算法概述如下: 
 3 找两素数p和q 
 4 取n=p*q 
 5 取t=(p-1)*(q-1) 
 6 取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1) 
 7 取d*e%t==1 
 8 
 9 这样最终得到三个数: n d e 
10 
11 设消息为数M (M <n) 
12 设c=(M**d)%n就得到了加密后的消息c 
13 设m=(c**e)%n则 m == M,从而完成对c的解密。 
14 注:**表示次方,上面两式中的d和e可以互换。 
15 
16 在加密中: 
17 n d两个数构成公钥,可以告诉别人; 
18 n e两个数构成私钥,e自己保留,不让任何人知道。 
19 给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。 
20 别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密

而常用公钥体制主要有两个作用:加密信息和认证。由于内容,我把链接给你,你参考着看看……挺好理解的
http://hi.baidu.com/piao2007/blog/item/ae2ec4f881f73202d8f9fd57.html

转载于:https://www.cnblogs.com/yanglang/p/10136845.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL中的日志类型(二)-General query log

简介 General query log记录客户端的连接和断开&#xff0c;以及从客户端发来的每一个SQL语句。 日志内容格式 General query log可以记录在文件中&#xff0c;也可以记录在表中&#xff0c;格式如下&#xff1a;在文件中会记录时间、线程ID、命令类型以及执行的语句示例如下&a…

android wi-fi_如何在Android手机上查找3G或Wi-Fi速度

android wi-fiAre you curious about what kind of connection speed you are getting with your Android phone? Today we’ll take a look at how to easily check your Wi-Fi or 3G speeds with Speedtest.net’s Speed Test app. 您是否对Android手机的连接速度感到好奇&a…

如何在Gmail的图片中插入超链接

Adding hyperlinks is an efficient way of getting your reader to the intended web page. Though it’s no secret that you can add hyperlinks to text, Gmail also lets you add hyperlinks to images in the body of the email. Here’s how to make it happen. 添加超链…

新垣结衣自拍照_如何阻止自拍照出现在iPhone的自拍照专辑中

新垣结衣自拍照Khamosh PathakKhamosh PathakThe Photos app on your iPhone automatically populates all photos from the front-facing camera in the Selfies album. But what if you don’t want a photo to appear there? Here are a couple of solutions. iPhone上的“…

如何设置自定义任务栏图标_如何为任何应用程序自定义Windows 7任务栏图标

如何设置自定义任务栏图标Would you like to change out the icons on your taskbar with a beautiful set of icons that all go together? Here’s how you can change out the random candy-colored icons for a stylish icon set of your choice. 您是否要用一组漂亮的图…

给谷歌浏览器安装vue调试工具:vue-devtools

安装vue-devtools一、拉取项目二、install、build三、添加扩展四、使用举例一、拉取项目 vue-devtools&#xff1a;git地址&#xff08;master分支&#xff09; 非master分支在build的时候会报错。 二、install、build 1、打开cmd进入项目目录&#xff0c;可以选择npm/cnpm/…

如何找到Windows 7或8家庭组密码?

So you’re about to setup your new Windows 7 PC into your Homegroup when you realized that you have no idea what the password is. How do you find it? It’s actually pretty simple, if you know where to look. 因此&#xff0c;当您意识到自己不知道密码是什么时…

MySQL索引背后的数据结构及算法原理

title: MySQL索引背后的数据结构及算法原理 date: 2018-07-25 19:50:16 tags: mysql categories: mysql --- 本文转载自http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL为研究对象&#xff0c;讨论与数据库索引相关的一些话题。特别需要说明…

使用mcBackup备份Windows 7 Media Center设置

If you’re a HTPC enthusiast and use Windows 7 Media Center, you probably have a lot of scheduled recordings and channel lineups you’d like to backup. Here we take a look at a simple tool that will allow you to do it easily. 如果您是HTPC爱好者并且使用Wind…

linux中service的问题

1.描述问题 2.解决方案 systemctl stop firewalld systemctl mask firewalldThen, install the iptables-services package: yum install iptables-servicesEnable the service at boot-time: systemctl enable iptablesManaging the service systemctl [stop|start|restart] i…

火狐可以打开谷歌打不开_如何设置Firefox以使用Google Apps打开所有内容

火狐可以打开谷歌打不开Google offers a pretty comprehensive set of online applications which many of you probably take advantage of. Here is how to easily configure Firefox to use Google’s online offerings for email, RSS, PDF and office documents as your d…

设置第三方的SMTP服务

取得授权码: 转载于:https://www.cnblogs.com/0909/p/10153499.html

表单重复提交问题

2019独角兽企业重金招聘Python工程师标准>>> 为什么会发生表单重复提交呢&#xff1f; 网络延时 在平时开发中&#xff0c;如果网速比较慢的情况下&#xff0c;用户提交表单后&#xff0c;发现服务器半天都没有响应&#xff0c;那么用户可能会以为是自己没有提交表单…

chrome 网页重新加载_在Chrome中为各个网页设置自定义重新加载时间

chrome 网页重新加载Do you have a webpage that needs to be reloaded every so often or perhaps you have multiple webpages that each need their own individual reload time? Now you can have the best of both with the AutoReloader extension for Google Chrome. 您…

iphone解锁_有人可以用解锁的iPhone做的最糟糕的事情是什么?

iphone解锁Dedi Grigoroiu/Shutterstock.comDedi Grigoroiu / Shutterstock.comWe use our phones for event tickets, reservations, insurance cards, and even driver’s licenses. But what happens when someone takes your unlocked iPhone out of view for a moment—wh…

Alamofire源码导读二:发起请求及内部加锁的逻辑

以创建一个 DataRequest 为例子 &#xfffc; 发起请求 创建 SessionManager 顺带也创建了一个 SessionDelegate 持有一个urlSession&#xff0c;持有一个串行的 DispatchQueue A。注意&#xff0c;这个不是urlSession 回调方法执行时所在的OperationQueue 创建 Requestable 的…

bixby映射软件下载_如何在Samsung Galaxy S8,S9,S10,Note 8或Note 9上重新映射Bixby按钮...

bixby映射软件下载We’ve said before, and we’ll say it again: Bixby sucks. You’re better off using Google Assistant any day of the week. The good news is, it’s now possible to remap the pointless Bixby button without using a third-party app. 我们之前已经…

JavaScript数据结构和算法

前言 在过去的几年中&#xff0c;得益于Node.js的兴起&#xff0c;JavaScript越来越广泛地用于服务器端编程。鉴于JavaScript语言已经走出了浏览器&#xff0c;程序员发现他们需要更多传统语言&#xff08;比如C和Java&#xff09;提供的工具。这些工具包括传统的数据结构&…

如何使用Avira Rescue CD清洁感染的PC

When you’ve got a PC completely infected with viruses, sometimes it’s best to reboot into a rescue disc and run a full virus scan from there. Here’s how to use the Avira Rescue CD to clean an infected PC. 当您的PC完全感染了病毒时&#xff0c;有时最好重新…

Vue组件的三种调用方式

最近在写fj-service-system的时候&#xff0c;遇到了一些问题。那就是我有些组件&#xff0c;比如Dialog、Message这样的组件&#xff0c;是引入三方组件库&#xff0c;比如element-ui这样的&#xff0c;还是自己实现一个&#xff1f;虽然它们有按需引入的功能&#xff0c;但是…