非对称加密 订阅
对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。 展开全文
对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
信息
密    钥
公钥、私钥
外文名
Asymmetric encryption
中文名
非对称加密
典型算法
RSA算法
非对称加密定义
1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。数据的加密和解密过程是通过密码体制和密钥来控制的。密码体制的安全性依赖于密钥的安全性,现代密码学不追求加密算法的保密性,而是追求加密算法的完备,即:使攻击者在不知道密钥的情况下,没有办法从算法找到突破口。根据加解密算法所使用的密钥是否相同,或能否由加(解)密密钥简单地求得解(加)密密钥。密码体制可分为对称密码体制和非对称密码体制。非对称密码体制也叫公钥加密技术,该技术是针对私钥密码体制(对称加密算法)的缺陷被提出来的。与对称密码体制不同,公钥加密系统中,加密和解密是相对独立的,加密和解密会使用两把不同的密钥,加密密钥(公开密钥)向公众公开,谁都可以使用,解密密钥(秘密密钥)只有解密人自己知道,非法使用者根据公开的加密密钥无法推算出解密密钥,这样就大大加强了信息保护的力度。公钥密码体制不仅解决了密钥分配的问题,它还为签名和认证提供了手段。非对称密码算法有很多,其中比较典型的是RSA算法,它的数学原理是大素数的分解。 [1] 
收起全文
精华内容
参与话题
问答
  • 对称加密非对称加密详解

    千次阅读 2018-09-01 18:33:57
    数据加密算法主要分为两大类:对称加密非对称加密 下面我们来看一下他们的区别的各自的作用   下面详细介绍两种加密方式的具体过程 (1)交易加密或者区块加密(对称加密) 为了让区块链中的交易信息或者...

    github首页:区块链学习有用链接和25本区块链书籍可免费阅读,觉得有用就fork或是star

    • 地址:https://github.com/cancerts/study-blockchain-referrence 点击这

    数据加密算法主要分为两大类:对称加密和非对称加密

    下面我们来看一下他们的区别的各自的作用

     

    下面详细介绍两种加密方式的具体过程

    (1)交易加密或者区块加密(对称加密)

    为了让区块链中的交易信息或者账本状态在网络中安全的传输进行的加密处理方式,基本原理如图1-1所示。

    我们使用一个范式表示为:密文=对称加密算法(明文(原始数据)+密钥K)

     

     

    从图中可以看出来,我们在不屑露交易双发真实信息的前提下,在网络中进行信息的传播,所以要进行信息的加密处理,我们使用对称加密密钥K对明文进行加密处理形成密文,密文在p2p网络中,进行传输,接受者使用相同的密钥进行解密得到明文。

    常见的“对称密钥”加密算法主要有DES、3DES(TripleDES)、AES、RC2、RC4、RC5和Blowfish等,具体每个算法的实现我就不再这里说了,感兴趣的自己取查找。

    对于在网络中传输的信息我们怎么确定信息的真实性,没有被篡改过呢,接下来图1-2所示的为使用数字摘要确保信息的真实性,具体的过程我们来看一下

     

    首先hash函数具有的其中的一个特性就是任何对原始数据的微小改变都会得到完全不一样的结果,所以利用数字摘要的比对可以确认数据有没有被修改过,过程是这样的,将明文hash后得到的数字摘要和密文一起传输,当接受者得到密文时使用密钥进行解密得到明文之后再对明文进行hash运算和区块中的数字摘要进行比较,一致则可以认为数据没有被篡改。

    (2)数字信封传递密钥(非对称加密:公匙加密-私匙解密)

    我们在之前在对数据进行加密时使用了相同的密钥K进行加密和解密,那么怎么确保发送者和接受者的密钥是同一个呢,怎么传递的?下面我将演示具体的实现过程,如图2-3所示。

     

    如果你还是不理解,我举个简单的例子来说,就像大家都喜欢成都小甜甜一样,你也喜欢,你就悄咪咪的写了一封情书,你的甜蜜的话语就相当于我们所说的密匙K,为了不让每个人都看到,害羞嘛,你懂的或是防止其他人比如邮差啊什么的,每天那么苦,有甜甜这样好养的女朋友当然

    也不想错过,一看小甜甜收,心想不能让你得逞,于是就私底下悄咪咪的改了你的甜言蜜语,结果是一段胡话,最后你懂的。。。。。。比较形象,当然,你不想发生这样的情况,你就使用对方的公开的密钥进行的一个加密处理,只有小甜甜的私钥才可以看见信封里面的内容,这就是我们的非对称加密,用来传输密钥。

    (3)数字签名防篡改(非对称加密:私匙加密-公匙解密)

    列一个范式:数字签名=加密(hash(明文)+私钥)

     

     

    数字签名说白了,就像你你现实生活中的手工签名一样,一旦某人签署了某份文件,因为每个人的签名是惟一的,我们就会认为你是他本人的行为,表示那个动作是他本人发出的,不允许抵赖,是有法律效应的,我们的数字签名其实和那个也差不多,只是利用一些密码学的算法来实现某人发生了什么行为,而且可以确定某样东西属于谁,因为私钥只有签名的那个人拥有。

    最后补充一个知识点:零知识证明

    •            意思就是验证着不适用提供的任何有用信息的情况下,使验证着相信某个结果是正确的

    好了,这也是我学习了好久搞明白的一些知识点,今年花了几个小时总结了一下,希望对你有所帮助

    github首页:区块链学习有用链接和25本区块链书籍可免费阅读,觉得有用就fork或是star

    • 地址:https://github.com/cancerts/study-blockchain-referrence 点击这
    展开全文
  • 非对称加密概述

    万次阅读 多人点赞 2018-07-29 16:16:15
    非对称加密概述 前言 在阅读《精通比特币》的过程中,我发现比特币系统中有两个重要的概念需要利用非对称加密技术: 比特币地址的生成 交易合法性的验证 因此,我用了几天时间学习了密码学基础知识,尤其是非...

    非对称加密概述

    前言

    在阅读《精通比特币》的过程中,我发现比特币系统中有两个重要的概念需要利用非对称加密技术:

    比特币地址的生成

    交易合法性的验证

    因此,我用了几天时间学习了密码学基础知识,尤其是非对称加密技术的原理。这里加以整理总结,本文只求通俗,必需涉及数学公式才能解释的部分只给出优质教程的链接,根据需求选择学习就好。

    本文以一个一脸懵逼的新手视角进行介绍:

    • 想了解非对称加密,那么对称加密是什么?
    • 非对称加密又是什么??
    • 非对称加密技术能做什么???
    • 如果想深入了解非对称加密算法原理看哪些资料????
      这里写图片描述

    先说说对称加密

    想了解非对称加密,不妨先解释对称加密是什么

    对称加密,全称应该是对称密钥加密(Symmetric-key algorithm),是密码学中的一类基本的加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。

    而在密码学中,密钥(key)是指某个用来完成加密、解密、完整性验证等密码学应用的秘密信息。

    一个密钥大概长这样“A56FDJK3+dj2slh345dhi”,一般以一定长度的字母和数字组成的字符串来表达,具体长度和使用的字母由具体的加密算法规定,没有统一规定。

    下面用例子和图来直观解释对称密钥加密,有请出密码学中出镜率最高的两个人:Alice和Bob

    假设Alice正在利用网络向Bob发送一条消息“Alice已向Bob转账1BTC,请查收。”
    这里写图片描述
    由于通信过程不能保证是安全的,两人的通信暴露在网络中是存在被第三方劫持的可能

    因此Alice和Bob商量使用对称加密方法对消息进行。

    为了安全,两人私下确定了使用的加密规则(例如对称加密算法DES),以及密钥(例如“AliceBobKey”)

    于是新的通信过程如下图所示:
    这里写图片描述
    从图中可以看出,Alice使用事先商量好的加密算法和密钥对消息进行加密,通过互联网发送给Bob,Bob收到密文后,使用同样的算法和密钥对密文进行解密。加密-解密的过程完全对称,因此被称为对称密钥加密。

    于是,即使现在存在第三方劫持了Alice发送的消息,也无法得知消息的具体内容,安全性得到的一定程度的保证。

    事实上,这组密钥成为了Alice和Bob的共同秘密,以便维持专属的通信联系,任何一方都不能将密钥泄露。

    对称加密的过程非常好理解,在很多场合都需要这种技术,也有着很多优点(比如速度快)。

    但与非对称加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。在某些特殊的场景下,这种加密技术就会有局限性,比如它无法用于身份验证,因为你不能将密钥提供给其他人。

    下面就来说说非对称加密

    非对称加密是什么?

    非对称加密(asymmetric cryptography),也称为公开密钥加密(Public-key cryptography),是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥。顾名思义,公钥可以任意对外发布;而私钥必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给要通信的另一方,即使他被信任。

    非对称加密的重要性质:

    1.加密的双向性。

    加密具有双向性,即公钥和私钥中的任一个均可用作加密,此时另一个则用作解密。
    这里写图片描述
    使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文,甚至连最初用来加密的密钥也不能用作解密,这是非对称加密最重要的性质或者说特点。

    2.公钥无法推导出私钥

    必须确保使用公钥无法推导出私钥,至少妄想使用公钥推导私钥必须在计算上是不可行的,否则安全性将不复存在。

    虽然两个密钥在数学上相关,但如果知道了公钥,并不能凭此计算出私钥;因此公钥可以公开,任意向外发布;而私钥不公开,绝不透过任何途径向任何人提供。

    注1:任何一种实现上面两条性质的不同方法,便是一种新的非对称加密算法。例如RSA算法和椭圆曲线算法,其背后原理大不相同,但都满足这两个重要性质或者说定义。这就好像好比欧式距离,马氏距离都满足了范数的定义,因此都是一种具体的范数。

    注2:如果你第一次接触非对称加密,你可能会和我一样对上面两条性质如何实现深感好奇,但目前你不必深陷于此,其背后的数学原理还是需要耐心钻研上几天的。现在仅仅牢记这两个性质就好,文末提供了一些优质的材料以供进一步学习。

    非对称加密的应用

    了解了非对称加密大致是什么,这小节来说说它能够做什么?

    前面已经知道,非对称加密具有双向性,即公钥和私钥中的任一个均可用作加密,此时另一个则用作解密。于是不同加密方向便产生了不同的应用。

    应用1:加密通信

    |明文|->公钥加密->|密文|->私钥解密->|明文|

    这种加密路径用于和他人进行加密通信,作用等同于对称加密。

    我们回到Alice和Bob的例子来看下。

    如果Bob想利用非对称加密算法私密的接收他人向他发送的信息,步骤是这样的。

    1.首先Bob需要使用具体约定的算法(例如RSA)生成密钥和公钥,密钥自己保留,公钥对外公布。

    2.Alice拿到Bob的公钥后,便可以对想要发送的消息“Alice已向Bob转账1BTC,请查收。”进行加密。

    3.然后Alice将密文(例如是“FH39ggJ+shi3djifg35”)发送给Bob。

    4.Bob收到消息后,用自己的私钥进行解密,还原出消息原文“Alice已向Bob转账1BTC,请查收。”

    用图来表示便是下面的过程:
    这里写图片描述
    由于使用Bob公钥加密的消息只能用Bob的私钥解密(Bob的公钥也是不行的),而私钥只有Bob拥有,因此即使消息被第三方劫持,他也无法还原出消息明文。

    应用2:数字签名

    如果反过来,先用私钥加密呢?这便诞生了非对称加密的另一个重要应用:数字签名

    我们回到Alice和Bob的例子来看下。

    在比特币系统中,类似“Alice已向Bob转账1BTC,请查收。”这样的消息最终会被矿工记录在账本上,是与转账双方利益相关的。这样一条消息的受益方是Bob,我们腹黑一点想,如果Bob一直向网络中广播Alice给他转账的消息呢?

    Bob:“Alice已向Bob转账1BTC”

    Bob:“Alice已向Bob转账2BTC”

    Bob:“Alice已向Bob转账3BTC”

    因此,我们需要一种机制来证明Alice是“自愿”的,也就是消息是Alice亲自发出的。步骤是这样的:

    1.Alice需要使用具体约定的算法(例如RSA)生成密钥和公钥,密钥自己保留,公钥对外公布。

    2.当Alice想要发送消息 Alice已向Bob转账1BTC,请查收。| 我的公钥是:“gh3giPGFN2jgh3sF”。 时,Alice使用自己的私钥对消息进行加密,假设加密后的密文是 SHG356g3T4+dh4fh,现在这个密文可以看作Alice的数字签名。

    3.Alice将消息明文和数字签名放到一起并发送到网络中

    发送的消息类似这样的形式 Alice已向Bob转账1BTC,请查收。| 我的公钥是:“gh3giPGFN2jgh3sF”。| 签名:“SHG356g3T4+dh4fh”

    4.网络中的所有人接收到消息后,都可以进行如下操作完成验证:

    收到消息 Alice已向Bob转账1BTC,请查收。| 我的公钥是:“gh3giPGFN2jgh3sF”。| 签名:“SHG356g3T4+dh4fh”

    使用Alice在消息中提供的公钥 gh3giPGFN2jgh3sF对私钥签署的数字签名SHG356g3T4+dh4fh进行解密

    将解密结果与消息明文 Alice已向Bob转账1BTC,请查收。| 我的公钥是:“gh3giPGFN2jgh3sF”进行对比

    如果一致,说明消息是Alice亲自发送的,因为只有Alice本人拥有Alice的密钥

    如果不一致,则说明消息不是Alice发送的,或者虽然消息是Alice发送的但已遭到他人篡改

    5.于是,通过4中描述的方法,Bob确认了Alice给他了一笔价值1BTC的转账。

    网络中其他人(矿工)均成功验证了这条消息的真实性,并为Bob作证他的账户新增了1个BTC,Alice的账户减少了1个BTC。

    整个过程可以被下图描述:
    这里写图片描述
    注1:上面仅仅是对数字签名技术的一个简单描述,很好理解吧~实际应用中的操作略有区别,比如通常是先对明文进行hash,再对hash后结果用私钥进行签名。

    注2:此外,上述介绍的数字签名简略版本是存在被第三方攻击的漏洞的。你能想到问题以及如何解决吗?[提示:相同内容的消息、时间戳]

    注3:如果你觉得对数字签名的理解还不够清晰,不妨再读读What is a Digital Signature?

    应用3:数字证书

    数字证书是非对称加密的又一个重要应用,由于与区块链的学习的关系相对不那么密切,这里就先放一边了。

    大家有兴趣可以看这篇文章数字证书原理,讲的很清晰

    教程推荐:加密-解密背后的数学原理

    读到现在,你应该对非对称加密的步骤非常了解了

    但你不清晰的地方是背后的数学原理,其实还是围绕非对称加密的两条性质来的:

    • 加密-解密的过程到底是如何实现的?
    • 为什么公钥无法推导出私钥?

    如果你想进一步探索,不妨读读下面这些资料:

    RSA算法是如何实现加密解密的?

    wiki:RSA algorithm

    阮一峰的网络日志:RSA算法原理(一)

    阮一峰的网络日志:RSA算法原理(二)

    椭圆曲线算法的具体原理?

    椭圆曲线算法可以用来进行秘密的共享以及数字签名,实际上其具体步骤和本文介绍的还是略有差异的,如果想详细了解原理,不妨看看下面这些文章:

    椭圆曲线算法的几个简单有意思的解释(知乎)

    推荐!椭圆曲线算法的通俗介绍(tutorial)

    椭圆曲线加密算法介绍

    展开全文
  • 什么是非对称加密(图文)

    千次阅读 2019-06-21 10:28:24
    非对称加密” 是相对 “对称加密” 而言的,简单来说,如果加密和解密使用的是同一个密钥,就是“对称加密”;如果加密和解密使用的是两个不同的密钥,就是“非对称加密”。 鲍勃有两把钥匙,一把是公钥,另...

    最通俗易懂的语言,让你1分钟了解区块链

    1

    非对称加密?

    “非对称加密” 是相对 “对称加密” 而言的,简单来说,如果加密和解密使用的是同一个密钥,就是“对称加密”;如果加密和解密使用的是两个不同的密钥,就是“非对称加密”。

     

    鲍勃有两把钥匙,一把是公钥,另一把是私钥。

     

    公钥可以给所有人,私钥只能鲍勃自己拥有。于是他把公钥送给了他的朋友们:帕蒂、道格、苏珊,每人一把。

     

    苏珊给鲍勃写了一封信,但不想让其他人看到。于是她就用鲍勃给的公钥设置个密码(加密),鲍勃收到信后,用他唯一的私钥解密后,就可以看到信件内容。

    也就是只有鲍勃有解密的密码,其他人都能看到苏珊给鲍勃写了封信,但是不知道信的内容。只要他的私钥不泄露,这封信即使落在别人手里,也无法解密。

    2

    数字签名

    数字签名也是字符串,是接收者用来识别发送者身份的。类似我们生活中白纸黑字的签名,这样更方便理解。

    还是鲍勃的故事继续举例:

     

    鲍勃打算给苏珊回信,他写完后先用Hash函数(哈希函数),生成信件的摘要(digest)。

    哈希函数是一种算法,就是把输入的数据(不论多大),打碎重组成另一段固定长度的数据,也就是鲍勃通过一个函数,把写给苏珊的回信转换成了一串字符。

     

    为了保密,鲍勃再用自己的私钥,对这个摘要(digest) 进行加密,生成了专属于他的 "数字签名"(signature)。然后,将这个数字签名,附在信件下面,一起发给苏珊。

    到此为止,整个发送邮件的过程,就是非对称加密的加密方式。

     

    每天1分钟,读懂区块链。

    想了解更多?记得关注公众号

    看过记得转发,喜欢记得点赞♥

    文中图片均来自网络

    转发本文至朋友圈

    截图发送到公众号后台

    免费获《图说区块链》1本

    展开全文
  • 非对称加密算法--RSA加密原理

    万次阅读 多人点赞 2018-12-24 00:33:58
    密码学是在编码与破译的斗争实践中逐步发展起来的,并随着...在中国历史上最早的加密算法的记载出自于周朝兵书《六韬.龙韬》中的《阴符》和《阴书》。在遥远的西方,在希罗多德(Herodotus)的《历史》中记载了公元前...

    密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。

    密码学发展史

    在说RSA加密算法之前, 先说下密码学的发展史。其实密码学的诞生,就是为了运用在战场,在公元前,战争之中出现了秘密书信。在中国历史上最早的加密算法的记载出自于周朝兵书《六韬.龙韬》中的《阴符》和《阴书》。在遥远的西方,在希罗多德(Herodotus)的《历史》中记载了公元前五世纪,希腊城邦和波斯帝国的战争中,广泛使用了移位法进行加密处理战争通讯信息。

    相传凯撒大帝为了防止敌人窃取信息,就使用加密的方式传递信息。那么当时的加密方式非常的简单,就是对二十几个罗马字母建立一张对照表,将明文对应成为密文。那么这种方式其实持续了很久。甚至在二战时期,日本的电报加密就是采用的这种原始加密方式。
    凯撒密码对照表

    早期的密码学一直没有什么改进,几乎都是根据经验慢慢发展的。直到20世纪中叶,由香农发表的《秘密体制的通信理论》一文,标志着加密算法的重心转移往应用数学上的转移。于是,逐渐衍生出了当今重要的三类加密算法:非对称加密、对称加密以及哈希算法(HASH严格说不是加密算法,但由于其不可逆性,已成为加密算法中的一个重要构成部分)。

    1976年以前,所有的加密方法都是同一种模式:加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法",使用相同的密钥,两次连续的对等加密运算后会回复原始文字,也有很大的安全隐患。

    1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为"Diffie-Hellman密钥交换算法"。也正是因为这个算法的产生,人类终于可以实现非对称加密了:A给B发送信息

    1. B要先生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
    2. A获取B的公钥,然后用它对信息加密。
    3. B得到加密后的信息,用私钥解密。
      理论上如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。

    1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是232个十进制位,也就是768个二进制位,因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全,当然量子计算机除外。

    RSA算法的原理

    下面进入正题,解释RSA算法的原理,其实RSA算法并不难,只需要一点数论知识就可以理解。

    1. 素数:又称质数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
    2. 互质,又称互素。若N个整数的最大公因子是1,则称这N个整数互质。
    3. 模运算求余运算。“模”是“Mod”的音译。和模运算紧密相关的一个概念是“同余”。数学上,当两个整数除以同一个整数,若得相同余数,则二整数同余
    欧拉函数

    任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?(比如,在1到8之中,有多少个数与8构成互质关系?)计算这个值的方法就叫做欧拉函数,以φ(n)表示。

    • 计算8的欧拉函数,和8互质的 1、2、3、4、5、6、7、8
      φ(8) = 4
      如果n是质数的某一个次方,即 n = p^k (p为质数,k为大于等于1的整数),则φ(n) = φ(p^k) = p^k - p^(k-1)。也就是φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4
    • 计算7的欧拉函数,和7互质的 123456、7
      φ(7) = 6
      如果n是质数,则 φ(n)=n-1 。因为质数与小于它的每一个数,都构成互质关系。比如5与1、2、3、4都构成互质关系。
    • 计算56的欧拉函数
      φ(56) = φ(8) * φ(7) = 4 * 6 = 24
      如果n可以分解成两个互质的整数之积,即 n = p * k ,则φ(n) = φ(p * k) = φ(p1)*φ(p2)

    欧拉定理:如果两个正整数m和n互质,那么m的φ(n)次方减去1,可以被n整除。
    欧拉定理.png

    费马小定理:欧拉定理的特殊情况,如果两个正整数m和n互质,而且n为质数!那么φ(n)结果就是n-1。
    费马小定理.png

    模反元素

    还剩下最后一个概念,模反元素:如果两个正整数e和x互质,那么一定可以找到整数d,使得 ed-1 被x整除,或者说ed被x除的余数是1。
    那么d就是e相对于x的模反元素。
    d是模反元素

    等式转换
    1. 根据欧拉定理
      等式转换1

    2. 由于1^k ≡ 1,等号左右两边都来个k次方
      等式转换

    3. 由于1* m ≡ m,等号左右两边都乘上m
      等式转换3.png

    根据模反元素,因为e*d 一定是x的倍数加1。所以如下:
    等式转换

    通过多次的等式转换。终于可以将这两个等式进行合并了!如下:
    最终等式转换

    这个等式成立有一个前提!就是关于模反元素的,就是当整数e和φ(n)互质!一定有一个整数d是e相对于φ(n)的模反元素。
    我们可以测试一下。
    m取值为4
    n取值为15
    φ(n)取值为8
    e 如果取值为3
    d 可以为 11、19…(模反元素很明显不止一个,其实就是解二元一次方程)
    如果你测试了,那么你可以改变m的值试一下,其实这个等式不需要m和n 互质。只要m小于n 等式依然成立。
    这里需要注意的是,我们可以看做 m 通过一系列运算得到结果仍然是 m。这一系列运算中,分别出现了多个参数n、φ(n)、e还有d。

    m 的 e乘上d 次方为加密运算,得到结果 c
    c 模以 n 为解密运算,得到结果 m
    这似乎可以用于加密和解密。但这样,加密的结果会非常大。明文数据将非常小(虽然RSA用于加密的数据也很小,但是没这么大悬殊),真正的RSA要更加强大,那么RSA是怎么演变来的呢??
    早期很多数学家也停留在了这一步!直到1967年迪菲赫尔曼密钥交换打破了僵局!

    迪菲赫尔曼密钥交换

    这个密钥交换当时轰动了整个数学界!而且对人类密码学的发展非常重要,因为这个伟大的算法能够拆分刚才的等式。当非对称加密算法没有出现以前,人类都是用的对称加密。所以密钥的传递,就必须要非常小心。
    迪菲赫尔曼密钥交换 就是解决了密钥传递的保密性,我们来看一下
    迪菲赫尔曼密钥交换
    假设一个传递密钥的场景。算法就是用3 的次方去模以17。 三个角色

    • 服务器 随机数 15
      这个15只有服务器才知道。通过算法得到结果 6 因为 3的15次方 mod 17 = 6 。然后将结果 6 公开发送出去,拿到客户端的 12 ,然后用12^15 mod 17 得到结果10(10就是交换得到的密钥)
    • 客户端 随机数13
      客户端用3 的 13次方 mod 17 = 12 然后将得到的结果12公布出去。
      拿到服务器的 6 ,然后用6^13 mod 17 得到结果10(10就是交换得到的密钥)
    • 第三者
      第三者只能拿到6 和 12 ,因为没有私密数据13、15,所以它没法得到结果10。

    为什么 6的13次方会和12的15次方得到一样的结果呢?因为这就是规律,我们可以用小一点的数字测试一下3^3 mod 17 = 10和10 ^ 2 mod 17 ; 3 ^ 2 mod 17 = 9和9^3 mod 17结果都是15。迪菲赫尔曼密钥交换最核心的地方就在于这个规律
    迪菲赫尔曼密钥交换转换

    RSA的诞生

    RSA原理

    现在我们知道了m^e % n = c是加密,c^d % n = m是解密,m就是原始数据,c是密文,公钥是n和e,私钥是n和d,所以只有n和e是公开的。加密时我们也要知道φ(n)的值,最简单的方式是用两个质数之积得到,别人想破解RSA也要知道φ(n)的值,只能对n进行因数分解,那么我们不想m被破解,n的值就要非常大,就是我们之前说的,长度一般为1024个二进制位,这样就很安全了。但是据说量子计算机(用于科研,尚未普及)可以破解,理论上量子计算机的运行速度无穷快,大家可以了解一下。

    以上就是RSA的数学原理

    检验RSA加密算法

    我们用终端命令演示下这个加密、解密过程。
    假设m = 12(随便取值,只要比n小就OK),n = 15(还是随机取一个值),φ(n) = 8,e = 3(只要和φ(n)互质就可以),d = 19(3d - 1 = 8,d也可以为3,11等等,也就是d = (8k + 1)/3 )
    终端分别以m=12,7输入结果
    终端演示

    OpenSSL进行RSA的命令运行

    Mac可以直接使用OpenSSL,首先进入相应文件夹

    • 生成公私钥
    // 生成RSA私钥,文件名为private.pem,长度为1024bit
    openssl genrsa -out private.pem 1024
    
    // 从私钥中提取公钥
    openssl rsa -in private.pem -pubout -out publick.pem
    

    生成私钥

    // 查看刚刚生成好的私钥
    cat private.pem
    
    // 查看刚刚生成好的公钥
    cat publick.pem
    

    查看公私钥

    我们可以看到base64编码,明显私钥二进制很大,公钥就小了很多。
    这时候我们的文件夹内已经多了刚刚生成好的公私钥文件了

    公私钥文件

    // 将私钥转换为明文
    openssl rsa -in private.pem -text -out private.txt
    

    96111F25-0954-4854-9B36-75413A439AFD.png

    里面就是P1、P2还有KEY等信息。

    • 对文件进行加密、解密
    // 编辑文件message内容为hello Vincent!!!
    // 刚刚的public.pem写成了publick.pem(哎。。。)
     $ vi message.txt
     $ cat message.txt
     hello Vincent!!!
    // 通过公钥加密数据时,使用encrypt对文件进行加密
     $ openssl rsautl -encrypt -in message.txt -inkey publick.pem -pubin -out enc.txt
    // 此时查看该文件内容为乱码
     $ cat enc.txt
    j��E]֌a��d�kUE�&<
                     ��I*��V/��pL[���ˋ�O�+�-�M��K�ܱ�&⪅ծO��2���o34�:�$���6��C�L��,b�'M�S�k�0���A��3%�[I���1�����ps"%
    // 通过私钥解密数据
     $ openssl rsautl -decrypt -in enc.txt -inkey private.pem -out dec.txt
    // 已成功解密,正确显示文件内容
     $ cat dec.txt
      hello Vincent!!!
    
    // 通过私钥加密数据时,要使用sign对文件进行重签名
    $ openssl rsautl -sign -in message.txt -inkey private.pem -out enc.bin
    // 此时查看该文件内容同样为乱码
    $ cat enc.bin
    {���Ew�3�1E��,8-OA2�Is�:���:�ԅ@MU����؜
                                          �i1B���#��6���ׂm�D(�t#/���	�ہ�������ݬ>(�>�^@�C��3�ӸMQт�O%
    // 通过公钥解密数据
    $ openssl rsautl -verify -in enc.bin -inkey publick.pem -pubin -out dec.bin
    // 已成功解密,正确显示文件内容
    $ cat dec.bin
     hello Vincent!!!
    
    RSA用途及特点

    到这里,大家都知道RSA通过数学算法来加密和解密,效率比较低,所以一般RSA的主战场是加密比较小的数据,比如对大数据进行对称加密,再用RSA给对称加密的KEY进行加密,或者加密Hash值,也就是数字签名。

    关于RSA数字签名后面再慢慢阐述。该文章为记录本人的学习路程,希望能够帮助大家,也欢迎大家点赞留言交流!!!https://mp.csdn.net/mdeditor/85228078#

    展开全文
  • 非对称加密

    2018-07-11 22:20:15
    北京的Bob发了一个快递到广州的Alice,途中经过了上海,上海快递中心出现了一个黑客H,他偷偷打开了Bob给Alice的快递,然后偷偷把里边的衣服剪烂,再按照原样包装好发往广州,可以看到对于这样简单包装的传输在中途...
  • 四、非对称加密

    2019-04-12 19:37:19
    非对称加密也叫公钥密码: 使用公钥加密, 使用私钥解密 ...用于解密的密钥必须被配送给接收者,这一问题称为密钥配送问题。...非对称加密中,密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息...
  • 全球可信的SSL数字证书申请:http://www.shuzizhengshu.com 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证...本文追本溯源围绕这个模式谈一谈。 名词解释 首先解释一下上面的几个名词: ...
  • 对称加密非对称加密(一)初步理解

    万次阅读 多人点赞 2018-12-26 23:23:21
    先查大范围 专业术语 再查小范围 便于... 从而出现了:对称加密非对称加密。 二、对称加密非对称加密 1. 对称加密 对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密对称加密只有一个秘钥,...
  • 常见非对称加密算法

    万次阅读 2019-04-10 15:14:35
    对称加密技术只使用一个秘钥不同,对称机密技术使用两个秘钥进行加解密,一个叫做公钥,一个叫做私钥,私钥自己来保管,公钥可以公开,使用公钥加密的数据必须使用私钥解密,反之亦然公钥和私钥是两个不同的秘钥...
  • 常用加密算法之非对称加密算法

    万次阅读 2018-03-16 21:44:45
    非对称加密算法 非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有...
  • 什么是非对称加密?非对称加密概念

    千次阅读 2018-11-12 11:07:12
    什么是非对称加密 ... 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应...
  • java对称加密非对称加密

    万次阅读 2017-11-26 22:25:49
    java对称加密非对称加密加密方式大致分为两种,对称加密非对称加密对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。非对称加密为数据的加密...
  • 第一 对称加密对称加密是指,加密方和解密方使用同样的秘钥来进行加密和解密。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去...
  • 例如,最古老的斯巴达加密棒,广泛应用于公元前7世纪的古希腊。16世纪意大利数学家卡尔达诺发明的栅格密码,基于单表代换的凯撒密码、猪圈密码,基于多表代换的维吉尼亚密码,二战中德军广泛使用的恩格玛加密机….但...
  • Android安全-对称加密非对称加密

    千次阅读 2016-01-07 19:31:44
    秘钥:分为加密秘钥和解密秘钥 明文:没有进行加密,能够直接代表原文含义的信息 密文:经过加密处理之后,隐藏原文含义的信息 加密:将明文转换为密文的过程 解密:将密文转换为明文...RSA:非对称加密,有公钥和私钥
  • 对称加密非对称加密的区别

    万次阅读 多人点赞 2018-08-13 17:53:37
    非对称加密:与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。 对称加密算法: 密钥较短,破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据...
  • 最全加密算法之对称加密非对称加密

    万次阅读 多人点赞 2016-08-27 10:27:30
    常见加密算法 : DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;  3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高; RC2和 RC4:用变...
  • client请求服务端(指定SSL版本和加密组件) server返回CA证书+公钥 client用机构公钥认证server返回的CA证书上的签名是否正确 client生成一个密钥R,用公钥对密钥R加密发送给server server用服务器的私钥解密...
  • 1、非对称加密过程:  假如现实世界中存在A和B进行通讯,为了实现在安全的通讯通道上实现信息的保密性、完整性、可用性(即信息安全的三个性质),A和B约定使用非对称加密通道进行通讯,具体过程如下:  ...
  • 【安全加密技术】非对称加密

    千次阅读 2015-07-08 23:35:11
    假如现在 你向支付宝 转账,即一些数据信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为: 1.首先你要确认是否是支付宝的数字证书,如果确认为...

空空如也

1 2 3 4 5 ... 20
收藏数 86,364
精华内容 34,545
关键字:

非对称加密