二维码

3.2 公开密钥算法 - 数据结构 - 机器学习

1320 人阅读 | 时间:2021年01月15日 01:06
3.2 公开密钥算法 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

3.2 公开密钥算法

1204 人参与  2018年08月25日 18:06  分类 : 区块链精品文章  评论

3.2.1 两把钥匙:公钥和私钥

公钥和私钥是现代密码学分支非对称性加密里面的名词,对于一段需要保护的信息,通常使用公钥加密,用私钥解密,这种加密方法也称为公开密钥算法。

在谍战剧里,发电报那种一般都是使用对称加密算法。这种加密方式缺点是显而易见的,如果被人知道了密钥和加密方 法,按照加密方法反着来就能解密。一直到非对称加密算法的出现,这种情况才有所改观。公钥就是可以对全世界公开的密钥,比如你和Google通信时,你可 以使用Google公开提供的1024位的公钥加密信息,加密后的密文只有使用Google私藏的私钥才可以做解密,这就保证了通信安全。

一般来说,公开密钥算法对于大篇幅的原始数据加密的性能不会很高,因此如果是用于大段数据的加密与解密,通常还是会使用强度比较高的对称加密算法,而公开密钥算法会用于在网络中传输对称加密算法的密钥,两者结合使用,发挥各自的优点。

自从非对称加密算法诞生以来,人们发现一些数学函数极其适用于这种算法,比如椭圆曲线加密算法。这些数学函数具有 某种困难度:由输入算输出很容易,但是从输出计算输入则几乎不可能。比特币是使用椭圆曲线加密算法作为公共密钥编码的基础的,事实上在很多区块链系统中都 是使用椭圆曲线加密算法。

3.2.2 RSA算法

RSA以它的三个发明者Ron Rivest、Adi Shamir和Leonard Adleman的名字首字母命名。RSA加密算法是最常见的非对称加密算法。它既能用于加密,也能用于数字签名,是目前最流行的公开密钥算法。RSA安全 基于大质数分解的难度,RSA的公钥和私钥是一对大质数,从一个公钥和密文恢复明文的难度,等价于分解两个大质数之积,这是公认的数学难题。

RSA的安全基于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,RSA的重大缺陷是无法从理论上把握它的保密性能如何。只不过RSA从提出到现在20多年,经历了各种攻击的考验,被普遍认为是目前最优秀的公钥方案之一。RSA的缺点是:

·产生密钥很麻烦,受限于质数产生的技术;

·分组长度太大,运算代价高,速度慢。

我们通过一个例子来理解RSA算法。假设Alice要与Bob进行加密通信,她该怎么生成公钥和私钥呢?

1)选择两个质数。通常是随机选择两个不同的质数,我们不妨称为p和q,本例中Alice选择了61和53,当然实际应用中,这两个质数越大越好,这样就越难破解。

2)计算p和q的乘积n。Alice把61和53相乘:n=61×53=3233。

n的长度就是密钥长度,3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位,实际应用中,RSA密钥一般是1024位,重要场合则为2048位,还是那句话,越长越好。

3)计算n的欧拉函数Φ(n)。

根据公式:φ(n)=(p-1)(q-1),Alice算出φ(3233)等于60×52,即3120,实际上就是两个质数分别减1后的乘积。

4)选择一个整数e。

这个整数是随机选择的,并且有个条件,条件是1<e<Φ(n),且e与Φ(n)互质。Alice就在1到3120之间,随机选择了17,实际应用中,常常选择65537。

5)计算e对于Φ(n)的模反元素d。

所谓“模反元素”就是指有一个整数d,可以使得e*d被φ(n)除的余数为1,表达式

如下:

e*d≡1(modφ(n))

这个式子等价于

e*d-1=kφ(n)

于是找到模反元素d,实质上就是对下面这个二元一次方程求解:

e*x+φ(n)y=1

已知e=17,φ(n)=3120,则17x+3120y=1。

这个方程可以用“扩展欧几里得算法”求解,此处省略具体过程。总之,Alice算出一组整数解为(x,y)=(2753,-15),即d=2753。

6)产生公钥和私钥。

将n和e封装成公钥,n和d封装成私钥,在Alice的例子中,n=3233,e=17,d=2753,所以公钥就是(3233,17),私钥就是(3233,2753)。

至此所有计算就完成了,可以看到RSA的算法过程其实还是很简单的,最关键的就是找到两个足够大的质数。

3.2.3 椭圆曲线密码算法

椭圆曲线是满足一个特殊方程的点集,注意,不要跟标准椭圆方程混淆,那根本就是两回事,看一个标准的椭圆曲线方程:

y2=x3+ax+b

在几何意义上,它通常是这样的一个图形,如下所示:

3.2 公开密钥算法 - 数据结构 - 机器学习

如上图所示,一个椭圆曲线通常是满足一个变量为2阶,另一个变量为3阶的二元方程。按照这样的定义,椭圆曲线是有很多种的,而椭圆曲线密码算法是基于椭圆曲线数学的一种公钥密码算法,其主要的安全性在于利用了椭圆曲线离散对数问题的困难性。

在区块链中,常用的是ECDSA(椭圆曲线数字签名算法),这是利用椭圆曲线密码(ECC)对数字签名算法 (DSA)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST(美国国家标准与技术研究院)标准。椭圆曲线密码算法 实现了数据加解密、数字签名和身份认证等功能,该技术具有安全性高、生成公私钥方便、处理速度快和存储空间小等方面的优势。相对于RSA算法,在实际的开 发使用中,椭圆曲线加密使用得更广泛,比如比特币就是使用了椭圆曲线中的SECP256k1,可以提供128位的安全保护。椭圆曲线具体的数学原理,其过 程证明比较晦涩枯燥,这里不再赘述,感兴趣的朋友可以去查阅一些相关的数学资料。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=103

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×