01-BTC-密码学原理
目录
前言
比特币中的密码学原理
1.哈希
2.签名
前言
学习肖臻老师的《区块链技术与应用》公开课笔记,供学习参考。
比特币中的密码学原理
1.哈希
- 密码学中使用的哈希函数(crypotographic hash function)
密码学中使用的哈希函数有两个重要的性质
- collision resistance(防碰撞)
collision指哈希碰撞:x≠y H(x)=H(y) 两个不同的输入,输出却是相等的。因为输入空间总大于输出空间,因此不可避免。除非暴力求解,很难根据x找到y。
根据人们的实践经验已证实,哈希碰撞是不可人为制造的。
- hiding(不可逆)
哈希函数的计算过程为单向的不可逆的。该性质的前提是输入空间足够大,分布较均匀。
以上两种性质结合在一起,可实现digital commitment (又称为digital equivalent of a sealed envelope):
将预测结果X输入计算哈希值Y,公布哈希值Y,最后公布X。在此过程中X不可被篡改。
- 比特币中使用的哈希函数
比特币中使用的哈希函数在密码学的基础上增加了一个性质:
puzzle friendly (不可预测)
即哈希值的计算是不可预测的
2.签名
在比特币中开户是在本地创立一个公私钥匙对(public key ,private key),来自非对称的加密技术。
在信息交流中公钥用来加密以及验证签名,私钥用来解密和签名,公钥和私钥互不相同。当公钥和私钥相同时,为对称加密。在非对称的加密技术中公钥就像我们的银行卡的卡号,而私钥是我们的银行卡的密码,别人如果给我们转钱只需要知道我们的银行卡号就可以了。
但是产生公私钥以及签名的时候都需要有一个好的随机源,防止产生相同的公私钥或者泄露私钥。
01-BTC-密码学原理相关推荐
- 区块链学习笔记一 BTC密码学原理
- Request和Response-学习笔记01【Request_原理和继承体系、Request_获取请求数据】
Java后端 学习路线 笔记汇总表[黑马程序员] Request和Response-学习笔记01[Request_原理和继承体系.Request_获取请求数据][day01] Request和Resp ...
- 一、区块链技术与应用-密码学原理
密码学原理: 哈希: 加密货币(crypto-currency) 密码学中所用的哈希函数被称为cryptographic hash function 它有两个重要的性质: 1. collis ...
- 北大肖臻老师《区块链技术与应用》系列课程学习笔记[1]Bitcoin中用到的密码学原理和数据结构
目录 一.比特币系统中用到的密码学原理 1.什么是比特币 2.哈希函数 3.非对称密码体系 4.数字签名 二.比特币中的数据结构--哈希指针和Merkle Tree 1.哈希指针 2.区块链 3.Me ...
- ukey的密码学原理
USBKey的密码学原理 首先,大致说下U盾的工作流程. 你的数字证书有一对,一份在U盾里的私钥,一份在银行的公钥(其实两份银行都有).U盾的原理很类似于双向认证的TLS(SSL)或者其它用到RSA的 ...
- 密码学原理-篇1:古典密码学
密码学原理-篇1:古典密码学 关键词: 恺撒密码 单表替换密码 多表替换密码 重合指数 古典密码学之所以被称为古典,是因为区别于现代密码学,这些密码理论虽然很有价值,但是现在很少使用.因此,学习古典密 ...
- 数据安全 密码学原理与概论
数据安全 密码学原理与概论 1.1. 密码学方向(公钥方向) 2 1.2. 古典密码主要靠算法,现代靠密钥 2 1.3. 香农三大定理 2 2. 古典密码 3 2.1. 古典密码学可以分为代替密码(也 ...
- 密码学原理与实践_到底什么是防火墙入侵检测密码学身份认证?如何高效建立网络安全知识体系?...
今天杰哥给大家推荐一本新的书籍,名字叫做<网络安全原理与实践>,这本书有一定的阅读门槛,不是一本面向新手或新人的书籍,至少需要你具备网络基础的功底,例如已学习并掌握了我前面推荐的两本书了. ...
- day 01 python爬虫原理
# 今日内容:爬虫原理# 爬虫课程:# 实训要求:# 一 课下写作业# 二 编写博客 # 一 爬虫基本原理# 1 什么是爬虫# 爬虫就是爬数据# 2 是什么互联网# 3 互联网建立的目的# 数据的传递 ...
- 密码学原理与实践第三版pdf_云计算原理与实践PDF电子书下载
今天分享的电子书是<云计算原理与实践>PDF电子书下载 本书细节 书名:<云计算原理与实践> 作者:王伟主编:郭栋,张礼庆,邱娟,张静轩,张东启,谭一鸣编著 出版时间:2018 ...
最新文章
- java怎么表示log2_Java程序员修炼之道 之 Logging(2/3) - 怎么写Log
- 10 年 IT 老兵给新人程序员的几点建议
- @hdu - 3746@ Cyclic Nacklace
- OpenCV周期性除噪滤波器
- OSPF 多区域配置
- GIT — 使用回顾
- Linux系统编程---11(会话,守护进程,创建守护进程)
- mysql 重命名索引_mysql增删改字段,重命名替换字段
- Jupyter Notebook的安装和使用
- 【codevs1026】逃跑的拉尔夫,广搜的胜利
- Win7虚拟机上安装Xcode 4
- 知识图谱研讨实录09丨肖仰华教授带你读懂知识图谱语言认知
- Ubuntu18.04、Ubuntu20.04之ROS安装教程
- 深度优先搜索DFS详解2(非常详细,容易理解)
- == 和equals的比较
- 假期之不务正业—— Qt+FFmpeg+百度api进行视频的语音识别
- JVM学习 -- JVM 性能调优监控工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解
- Linux之ARM(IMX6U)裸机汇编LED驱动实验--编译驱动
- 计算机无法读取内存,电脑内存条无法识别,真正的原因在这里
- JS:简单的页面广告制作(右下角广告可自动消失)