五分钟时间,带你认识比特币的加密算法

以比特币为代表的各种区块链币,之所以被称之为加密数字货币,是因为密码学是比特币设计的重要安全基石,用以确保货币流通各个环节安全性。

比特币使用的加密算法被称之为椭圆曲线算法(ECC),是一种著名的非对称算法。

相较于另一种著名的非对称算法RSA,ECC算法的数学理论非常深奥和复杂,在工程应用中比较难于实现,但它的单位安全强度相对较高。

由于ECC算法数学理论深奥,难以被一般民众掌握,为了便于说明,本文将对RSA算法的原理进行说明,以使大家对比特币加密算法有个深入的了解。

密码学的发展是伴随着信息交流的发展而不断进化的,是为了保障信息在传输过程中,即使被截获也不能被还原,至少不能被轻易的还原。

我们日常生活中,最常见的信息传输方式是:A同学将要传输的信息通过软件(比如WinRAR,WinZip等)进行加密压缩,然后将加密后的文件发送给B同学,B同学用事先约定好的密码进行解密,从而完成安全的信息交流。如果在密码很复杂的情况下,截获方不知道密码是难以破解的。

但这里面存在一个悖论,如果A和B是通过网络传输密码的情况下,怎么能保证密码传输过程中的安全呢?

01.哈希算法

传统的加密方法是不能公开的,因为知道了加密方法也就知道了解密方法,只需要反向计算就能解密。有没有一种加密算法,即使知道了加密方法,也不能恢复出原文呢?这种算法的原理是,在加密过程中加入一些不可逆的运算来实现。

比如说:需要加密的数字M,采用下面的加密规则进行加密。

1.将M加上123456;

2.把结果平方,取第3-10位,组成一个8位数字;

3.将这个数字除以456789求余数;

得到的数字就是加密之后的结果。

在密码学上,这种会丢掉一部分信息的加密方式被称为“单向加密”,也叫哈希算法。一个可靠的哈希算法至少需要满足下面几个基本条件:

第一,对于给定的数据M,很容易算错哈希值X=F(M);

第二,根据X很难算出M;

第三,很难找到M和N使得F(M)=F(N)。

真实世界的哈希算法原理和上面类似,但也更为复杂。

目前被广泛使用的哈希算法包括MD5以及SHA-256算法。哈希算法的结果长度都是固定的,比如:MD5的结果长度是32个字符,而SHA-256的是64个字符。

所以,后者的算法强度比前者的要强,也就更安全。假设我们要对“WoYaoJiaMi”进行加密,MD5算法的结果是:“3832EE29D065861A9C006BEDA8C63D3C”,而SHA-256的结果是:

3C56D7479A96942B9D96D4D1AF24F8F8566EBD30B393B40099F43A48F093B7C9

单向加密算法一般用来进行防伪,主要用于验证传输结果的准确性验证。比如:下载一个安装程序的时候,为了保证安装程序不被调包,其提供者一般会公开MD5编码,这样下载的人可以通过工具算出下载到本地的程序的MD5值,如果两者一致就证明安装程序是正确的,反之则不能使用这个程序了。

02.非对称加密算法

哈希算法在真实应用的时候,有一个缺陷就是密码传输的保密问题。

如果我们对一份资料进行了加密,对方不知道密码是打不开的,从而确保文件不被窃取;但是,怎样让我们发送的对象知道密码是一个难题。

这就要求我们发明一种新的算法,使得:即使有人拿到了密码也没法解密,还需要知道另外一个密码才可以解密。

前一个密码称之为公钥,后一个密码称之为私钥,只要私钥不丢,任何人都无法窃取或者篡改数据。这种密码系统,加密和解密使用不同的密码,公钥用来加密并且是可以公开的,解密使用密钥进行加密。这就叫非对称加密算法。

03.RSA算法

1977年,罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)共同设计了一种非对称加密算法,被称为RSA算法。RSA实际上是三位发明人的名字首字母缩写。RSA算法的加密流程如下:

第一,乙方生成两把密钥(公钥和私钥),公钥是公开的,私钥是保密的,只有乙方知道。

第二,甲方获取乙方的公钥,然后用它对信息进行加密。

第三,乙方使用私钥对加密信息进行解密。

RAS算法的安全性依赖于大数分解。

大数分解是一个数学上公认的难题,比如说对于数字4,000,000,000,000,000,000,000,000,000,001=1,199,481,995,446,957x3,334,772,856,269,093,要找到2个素数来计算得出前面的数字式非常难。

04.ECC算法

还有一种著名的非对称算法,称之为ECC算法(椭圆曲线算法),它是比特币钱包安全性的密码学基石,也是比特币被称之为加密数字货币(Cryptocurrency)的原因。

椭圆加密算法(ECC)是一种公钥加密体制,最初由Koblitz和Miller两人于1985年分别独立提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。

ECC的主要优势体现在:

第一,安全性更高。160位的椭圆密钥与1024位的RSA密钥安全性相同。

第二,处理速度更快。在私钥的加密解密速度上,ECC算法比RSA、DSA速度更快。

第三,存储空间占用小、带宽要求低。

美国国家标准与技术局和ANSIX9已经设定了最小密钥长度的要求,RSA和DSA是1024位,ECC是160位,相应的对称分组密码的密钥长度是80位。

在2005年2月16日,NSA宣布决定采用椭圆曲线密码的战略作为美国政府标准的一部分,用来保护敏感但不保密的信息。ECC算法已经逐步开始替代RSA算法。

THE END
1.五分钟学算法五分钟学算法浏览人数已经达到0,如你需要查询该站的相关权重信息,可以点击"5118数据""爱站数据""Chinaz数据"进入;以目前的网站数据参考,建议大家请以爱站数据为准,更多网站价值评估因素如:五分钟学算法的访问速度、搜索引擎收录以及索引量、用户体验等;当然要评估一个站的价值,最主要还是需要根据您自身的需求以及需要https://www.colabug.com/sites/13534/
2.有哪些高质量的自学网站?25、五分钟学算法(http://cxyxiaowu.com/) 一个完全免费的算法学习网站。 有很多的算法题和概念解释,甚至面试的攻略,适合新手的学习和进阶。 漫画式的教学,将复杂的内容深入浅出,效果很棒! 26、菜鸟教程(http://runoob.com/) 正如其名,非常适合新手的编程技术网站。 https://www.douban.com/note/767851363/
3.五分钟学算法链接直达手机查看 GitHub 42000 Star,全球排名 79 。小吴讲算法,图解面试算法,来和程序员小吴一起学算法吧,学习如何刷力扣(LeetCode),掌握如何学习数据结构。五分钟学算法官网,一个算法学习的网站,图解力扣算法,看动画,刷力扣,备面试,跳槽涨薪美滋滋。https://www.toolmao.com/sites/1338.html
4.五分钟学算法个人介绍 公众号【五分钟学算法】个人网站:https://www.cxyxiaowu.com 他关注的专题/文集/连载 他喜欢的文章 他创建的专题 LeetCodeAnimation 五分钟学算法 在PPT动画中学算法 从零开始学Swift 他的文集 日记本 新媒体管家发布 五分钟学算法 Python https://www.jianshu.com/u/c6ad3f2ed2d6
5.吴师兄学算法五分钟学算法吴师兄学算法(www.cxyxiaowu.com)提供许多数据结构与算法学习的基础知识, 涵盖 LeetCode 题解、剑指 Offer 题解、数据结构等内容。https://www.cxyxiaowu.com/
6.五分钟学算法青少年人工智能资源与创新平台五分钟学算法授课教师:王晓茹价格免费学习有效期 长期有效 免费加入 简介 学习目录简介 缜密的思维,形象的语言,妙绝的思路,再难的算法,也能信手拈来,娓娓道给你听! 王晓茹,博士,任教于北京邮电大学计算机学院,副教授、硕士生导师。曾在美国MIT(麻省理工学院)和美国PSU(波特兰州立大学)访问学习。现任中国人工智能https://yuanzhuo.bnu.edu.cn/goods/show/33
7.全网最全程序员学习网站汇总,还不赶快收藏地址: 五分钟学算法 简介:有少量非常不错的数据结构、算法相关的内容。 推荐指数:? 13、犬小哈教程网 地址: 犬小哈教程网 简介:少量哈士奇的技术问答漫画很有意思。 推荐指数:? 15、原创技术大联盟 地址: 原创技术大联盟 简介:优秀的技术博主实在太多了,列不完,也看不完,这里有一个导航页https://www.songma.com/news/txtlist_i66992v.html
8.每天五分钟机器学习:聚类算法中经常使用的肘部法则是什么?如何选择聚类的数目K,也就是说我们要将数据聚成几簇。我们可以通过可视化的方式(画图),或者聚类算法的输出结果(试一试)来手动的决定聚类的数目,或者根据实际需要来确定我们想要聚成几簇,比如前面的衣服问题。 肘部法则 对于肘部法则,我们所需要做的是改变 k 值,也就是聚类类别的数量。我们对不同的k来计算代价函数,https://download.csdn.net/blog/column/10047693/128174719
9.算法五分钟算法小知识:学习数据结构和算法的框架思维收藏 https://developer.aliyun.com/ask/283137
10.吴师兄学算法五分钟学算法吴师兄学算法 (www.cxyxiaowu.com) 专注于提供数据结构与算法学习的基础知识,涵盖 LeetCode 题解、剑指 Offer 题解、数据结构等内容。它是一个非常有用的资源平台,特别适合那些希望提高编程技能和算法理解能力的学习者。 吴师兄学算法-五分钟学算法_致力于让每个小白都能看懂每一道算法题 https://pidoutv.com/sites/27782.html
11.分数混合运算教学设计(精选7篇)本节课主要是让学生在自学指导的指引下进行自学,在自学过程中,重点解决分数乘除混合运算的问题,“送给幼儿园多少顶帽子”,这个问题实质上是先求“6米里有几个2/5米(即一共制作了多少顶帽子)”,再求“15的2/3是多少”,由于学生前面已经学过求一个数的几分之几是多少,已经有了一定的'基础,因此在解决这一https://xiaoxue.ruiwen.com/jiaoxuesheji/184931.html
12.BoostKit大数据业界趋势鲲鹏大数据组件增强特性和典型配置鲲鹏BoostKit CDN使能套件聚焦CDN开源组件可用性和CDN缓存节点吞吐量低、时延大等问题,提供CDN主流组件的开源使能和性能调优指南,通过使能鲲鹏处理器内置的RSA加速引擎,对RSA2048算法进行硬件卸载,同时提供了NUMA优化等手段,以便充分发挥鲲鹏处理器多核优势,助力客户CDN缓存节点提供更大吞吐量,实现更低时延。 https://developer.huawei.com/consumer/cn/blog/topic/03898238728230088
13.五分钟弄懂有点难度的排序:堆排序腾讯云开发者社区Go代码实现 Java代码实现 Python代码实现 JavaScript代码实现 如果你是iOS开发者,可以在GitHub上https://github.com/MisterBooo/Play-With-Sort-OC获取更直观可调试运行的源码。 你可以在公众号 **五分钟学算法** 获取更多排序内容。https://cloud.tencent.com/developer/article/1366827
14.七年级数学上册《有理数的混合运算》教案(精选5篇)[师]我们已学过哪种运算? [生]乘方、乘、除、加、减五种;复习各种运算的法则; 例计算: ①②(教师板书) ③④(学生计算) 二、混合运算举例。 1.(生口答)下列计算错在哪里?应如何改正? (1)74-22÷70=70÷70=1 (2)(-112)2-23=114 -6 = -434 https://www.unjs.com/jiaoan/shuxue/20190406082153_1953710.html
15.初中数学平均数说课稿(通用7篇)学生经过以上五个环节的学习,已经初步掌握了算术平均数、加权平均数的计算和确定方法,有待进一步提高认知水平,因此我针对学生素质的差异设计了有层次的训练题,其中包括了必做题和选做题,留给学生课后自主探究,这样既使学生掌握基础知识,又使学有余力的学生有进一步发展的空间和余地,这样也充分反映了新课改的精神,就是https://www.yjbys.com/shuokegao/chuzhong/3465388.html
16.leetcode算法题目动画解析文章最新首发于微信公众号 吴师兄学算法,您可以关注获取最新的文章。 为了帮助大家更好的入门学习算法,经过半年的积累,我给大家整理了《剑指 Offer》系列的四十道题目,都是算法面试的高频题目,每一道题目我都提供详细的分析、精美的配图、易于理解的动画视频,适合那些第一次刷题的同学,当然,也适合重复刷题的老手再次https://github.com/MisterBooo/LeetCodeAnimation
17.深度解读《原则》:掌握更高次的思考方式接下来我们来讨论,我们从达利欧的人生原则中可以学到的五条原则。 三、达利欧人生原则第1条: 做一个超级现实的人 达利欧人生原则的第一条是:做一个超级现实的人(Be a hyperrealist)。 你要用自己的眼睛看到真正的现实,不是让自己头脑中想象、理论扭曲现实。根据马浩教授的转述,管理大师彼得·德鲁克曾经赞扬美国前https://www.36kr.com/p/5119172.html