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

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

比特币使用的加密算法被称之为椭圆曲线算法(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.全网最全程序员学习网站汇总,还不赶快收藏地址: 五分钟学算法 简介:有少量非常不错的数据结构、算法相关的内容。 推荐指数:? 13、犬小哈教程网 地址: 犬小哈教程网 简介:少量哈士奇的技术问答漫画很有意思。 推荐指数:? 15、原创技术大联盟 地址: 原创技术大联盟 简介:优秀的技术博主实在太多了,列不完,也看不完,这里有一个导航页https://www.songma.com/news/txtlist_i66992v.html
2.吴师兄学算法五分钟学算法吴师兄学算法(www.cxyxiaowu.com)提供许多数据结构与算法学习的基础知识, 涵盖 LeetCode 题解、剑指 Offer 题解、数据结构等内容。https://www.cxyxiaowu.com/
3.五分钟学算法五分钟学算法浏览人数已经达到0,如你需要查询该站的相关权重信息,可以点击"5118数据""爱站数据""Chinaz数据"进入;以目前的网站数据参考,建议大家请以爱站数据为准,更多网站价值评估因素如:五分钟学算法的访问速度、搜索引擎收录以及索引量、用户体验等;当然要评估一个站的价值,最主要还是需要根据您自身的需求以及需要https://www.colabug.com/sites/13534/
4.五分钟学算法链接直达手机查看 GitHub 42000 Star,全球排名 79 。小吴讲算法,图解面试算法,来和程序员小吴一起学算法吧,学习如何刷力扣(LeetCode),掌握如何学习数据结构。五分钟学算法官网,一个算法学习的网站,图解力扣算法,看动画,刷力扣,备面试,跳槽涨薪美滋滋。https://www.toolmao.com/sites/1338.html
5.五分钟学算法个人介绍 公众号【五分钟学算法】个人网站:https://www.cxyxiaowu.com 他关注的专题/文集/连载 他喜欢的文章 他创建的专题 LeetCodeAnimation 五分钟学算法 在PPT动画中学算法 从零开始学Swift 他的文集 日记本 新媒体管家发布 五分钟学算法 Python https://www.jianshu.com/u/c6ad3f2ed2d6
6.分享一个学习算法的网站五分钟学算法官方网站文章浏览阅读1.5k次。五分钟学算法:https://www.cxyxiaowu.com/通过动画来理解算法,我觉得很有意思。然后祝程序员生日快乐,永不加班!_五分钟学算法官方网站https://blog.csdn.net/qq_36767214/article/details/102732104
7.五分钟学算法官方网站理想股票技术论坛五分钟学算法官方网站,五分钟学算法,官方网站,算法教程,在线学习,编程教程 五分钟学算法官方网站,提供丰富的算法教程,在线学习编程知识,轻松掌握各类算法技巧。 公式法详解与应用实例视频教程 [股票软件指标公式技术交流] 刻骨2010 2024-8-18 相关标签:五分钟学算法官方网站 数学公式软件app 计算题公式法的公式 https://www.55188.com/tag-08617563.html
8.五分钟学算法摘要: 本文首发于公众号「五分钟学算法」,是图解 LeetCode 系列文章之一。 个人网站:https://www.cxyxiaowu.com 动态规划 1 概念 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。在学习动态规划之前需要明确掌握几个重要 阅读全文 posted @ 2019-11-15 https://www.cnblogs.com/fivestudy/
9.数学学习心得体会(通用25篇)通过一个学期的教学实践和本人所教五年级两个班的教学实况,下面就学习新数学课程标准,谈一谈我的一点体会和做法: 一、新课程标准下的教学中师生应相互沟通和交流 在传统教学中,教师负责教,学生负责学,以“教”为中心,学生围绕教师转。教师是知识的占有者和传授者,是权威;教师是课堂的主宰者。教师与学生之间缺乏https://m.jy135.com/xindetihui/666692.html
10.五分钟学算法青少年人工智能资源与创新平台五分钟学算法授课教师:王晓茹价格免费学习有效期 长期有效 免费加入 简介 学习目录简介 缜密的思维,形象的语言,妙绝的思路,再难的算法,也能信手拈来,娓娓道给你听! 王晓茹,博士,任教于北京邮电大学计算机学院,副教授、硕士生导师。曾在美国MIT(麻省理工学院)和美国PSU(波特兰州立大学)访问学习。现任中国人工智能https://yuanzhuo.bnu.edu.cn/goods/show/33
11.空间转录组测序5分钟速学图像手动对齐!科研动态上海伯豪Space Ranger 软件提供功能:一种是自动对齐(只需要提供图片文件),另外一种是手动对齐(除了需要提供图片文件,还需要提供图像组织位置跟 spot 对应信息的 json 文件)。本文带你一分钟了解10x 空间转录组 Visium的图像手动对齐应该怎样做? Space Ranger 管线使用自动图像检测算法来计算基准标记的位置,并找到组织的边界。10https://www.shbio.com/articles/6173
12.算法五分钟算法小知识:学习数据结构和算法的框架思维收藏 https://developer.aliyun.com/ask/283137
13.吴师兄学算法五分钟学算法吴师兄学算法 (www.cxyxiaowu.com) 专注于提供数据结构与算法学习的基础知识,涵盖 LeetCode 题解、剑指 Offer 题解、数据结构等内容。它是一个非常有用的资源平台,特别适合那些 吴师兄学算法 (www.cxyxiaowu.com) 专注于提供数据结构与算法学习的基础知识,涵盖 LeetCode 题解、剑指 Offer 题解、数据结构等内https://pidoutv.com/sites/27782.html
14.BoostKit大数据业界趋势鲲鹏大数据组件增强特性和典型配置鲲鹏BoostKit CDN使能套件聚焦CDN开源组件可用性和CDN缓存节点吞吐量低、时延大等问题,提供CDN主流组件的开源使能和性能调优指南,通过使能鲲鹏处理器内置的RSA加速引擎,对RSA2048算法进行硬件卸载,同时提供了NUMA优化等手段,以便充分发挥鲲鹏处理器多核优势,助力客户CDN缓存节点提供更大吞吐量,实现更低时延。 https://developer.huawei.com/consumer/cn/blog/topic/03898238728230088
15.我们给区块链提了这100个问题来全面扫盲科技频道区块链是一个集合了密码学、分布式储存、智能合约、共识算法等多种新兴技术的数据传输方式,本质上是一种集成技术,而非一个特定技术的发明。 区块链本质上是一个应用了密码学技术的,多方参与、共同维护、持续增长且不可篡改的分布式数据库系统,也称为分布式共享账本。在数据上传的过程中,数据会被打包到一起形成一个https://tech.hexun.com/2019-11-13/199255086.html
16.五分钟弄懂有点难度的排序:堆排序腾讯云开发者社区Go代码实现 Java代码实现 Python代码实现 JavaScript代码实现 如果你是iOS开发者,可以在GitHub上https://github.com/MisterBooo/Play-With-Sort-OC获取更直观可调试运行的源码。 你可以在公众号 **五分钟学算法** 获取更多排序内容。https://cloud.tencent.com/developer/article/1366827
17.leetcode算法题目动画解析文章最新首发于微信公众号 吴师兄学算法,您可以关注获取最新的文章。 为了帮助大家更好的入门学习算法,经过半年的积累,我给大家整理了《剑指 Offer》系列的四十道题目,都是算法面试的高频题目,每一道题目我都提供详细的分析、精美的配图、易于理解的动画视频,适合那些第一次刷题的同学,当然,也适合重复刷题的老手再次https://github.com/MisterBooo/LeetCodeAnimation
18.动效教程!充满科技感的飞线图动效,设计加代码一起教给你!本篇文章大概9300字,配图86张,约13分钟视频教程一个。配合文章制作1个示例网页,代码示例5个。阅读设计部分需要10分钟。阅读代码部分需要20分钟。 文章主要大纲: 设计部分 用AE来制作飞线图效果。 代码部分 CSS 实现飞线图效果。 SVG 实现飞线图效果。 https://uiiiuiii.com/other/1212414982.html
19.深度解读《原则》:掌握更高次的思考方式接下来我们来讨论,我们从达利欧的人生原则中可以学到的五条原则。 三、达利欧人生原则第1条: 做一个超级现实的人 达利欧人生原则的第一条是:做一个超级现实的人(Be a hyperrealist)。 你要用自己的眼睛看到真正的现实,不是让自己头脑中想象、理论扭曲现实。根据马浩教授的转述,管理大师彼得·德鲁克曾经赞扬美国前https://www.36kr.com/p/5119172.html
20.算法希尔排序51CTO博客五分钟学算法关注 由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列 ---《图解数据结构》,主要使用动画来描述常见的数据结构和算法。本系列包括十大排序、堆、队列、树、并查集、图等等大概几十篇。 希尔https://blog.51cto.com/u_15054042/4236163