所谓加密货币是不加密的,区块链上所有的交易内容(包括:账户的地址,转账的地址)都是公开的。

Bitcoin中主要用到密码学的中的两个功能:Hash和签名。

一 Hash

Cryptographic hash function:

1.Collision resistance

  Hash碰撞其实很常见,因为输出空间是邮有限的,比如256位的Hash值,输出空间就2的256次方,但是输入空间是无限的。但是Collision  resistance是指目前没有有效的方法可以通过hash值反推输入值,只能通过Brutal Force破解。如果输入空间比较大,在实际破解中,就几乎不可行了。即,具有防篡改性。

ps:MD5算法已经不具备该特性了。(已经掌握了如何人为的制造Hash碰撞了)

2.Hiding

指的是Hash的计算过程是单项的,不可逆。但是依然可以考虑使用暴力破解。

ps:实际工作中,为了防止暴力破解,会采用拼接随机数nonce后(增大输入空间),计算Hash值。

3.puzzle friendly

指的是Hash值事前是不可预测的,如果想hash落在某个范围内,只能一个个的去试。

Bitcoin中使用的hash函数是SHA-256 (secure hash Algorithm)

二 签名

  需要先知道Bitcoin中的账户管理机制,去中心化,想开户就是在本地创建一对(公钥,私钥),就代表一个账户。如果需要给某个账户转10个Bitcoin,需要用自己私钥签名,对方用我的公钥解密就可以验证了。

p1.BTC-密码学的原理的更多相关文章

  1. PalletOne调色板跨链的BTC实现

    之前已经讲到了PalletOne调色板跨链以太坊ETH和ERC20的技术原理,接下来我们来讲解PalletOne跨链比特币BTC的技术原理. 一.BTC充币 假如用户A持有一定数量的比特币BTC,他希 ...

  2. Rust 实现一个简单的区块链

    一.背景 近期用 Rust 实现了 Jeiwan/blockchain_go,与原项目相比没有加入新的功能,只是换了一个编程语言实现了一遍,源码放在 Github 上. 开发这个项目,花费了好几个周末 ...

  3. 加密---公钥&密钥

    一直以来对公钥和私钥都理解得不是很透彻,感觉到模棱两可.今天在网上找了半天,通过查看对这个密钥对的理解,总算弄清楚了.      公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密 ...

  4. [转]加盐hash保存密码的正确方式

    0x00 背景 大多数的web开发者都会遇到设计用户账号系统的需求.账号系统最重要的一个方面就是如何保护用户的密码.一些大公司的用户数据库泄露事件也时有发生,所以我们必须采取一些措施来保护用户的密码, ...

  5. 加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证

    加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证 各角色比喻 客户端:通常为请求方,要验证服务器的身份. 服务器:通常为响应方,有时也要 ...

  6. zkSNARK 零知识验证

    参考文献 ZCash7篇,有社区翻译版,但还是推荐看原汁原味的     https://z.cash/blog/snark-explain.html Vitalik3篇,小天才作者我就不介绍了,这三篇 ...

  7. 非对称加密与HTTPS(转)

    序:HTTPS更安全,为什么? 因为HTTP协议本身毫无安全性可言. 当你访问一个纯HTTP的网站(以及与这个网站有任何网络交互)时,你发出去一个请求.在这个请求到达网站服务器的路途上,不管是你家的路 ...

  8. RSA原理、ssl认证、Tomcat中配置数字证书以及网络传输数据中的密码学知识

      情形一:接口的加.解密与加.验签 rsa不是只有加密解密,除此外还有加签和验签.之前一直误以为加密就是加签,解密就是验签.这是错误的! 正确的理解是: 数据传输的机密性:公钥加密私钥解密是密送,保 ...

  9. 【密码学】轻松理解“加盐”的原理与java实现

    转自:https://blog.csdn.net/DavidHuang2017/article/details/80283469 一.什么是加盐? 1.背景 现在很多公司后台以hash值形式存储用户密 ...

  10. 密码学——网间数据加密传输全流程(SSL加密原理)

    0.导言 昨天写了一篇关于<秘钥与公钥>的文章,写的比较简单好理解,有点儿像过家家,如果详细探究起来会有不少出入,今天就来详细的说明一下数据加密的原理和过程.这个原理就是大名鼎鼎SSL的加 ...

随机推荐

  1. MySql分区后创建索引加速单表查询和连表查询

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/konkon2012/article/de ...

  2. XCode教程之 如何在苹果开发者平台添加设备UDID

    XCode教程之 如何在苹果开发者平台添加设备UDID.在Xcode开发中,如何在苹果开发者平台添加新的手机设备UDID,进行测试,具体如下 工具/原料 Apple Developer 方法/步骤 1 ...

  3. tf.image.crop_and_resize

    https://blog.csdn.net/m0_38024332/article/details/81779544 将图片剪切下来,池化为固定大小.可以快速的对proposal进行池化

  4. too many positional arguments错误

    在window下mongodb默认安装在c盘的Program Files文件下 这个文件名中间有个空格    就导致了接下来too many positional arguments错误的产生

  5. mysql全文索引:fulltext

    fulltext全文索引 要使用全文索引,不仅需要把某个字段的索引类型设置为fulltext,还需要修改mysql配置文件: [mysqld] ft_wordlist_charset #表示词典的字符 ...

  6. 有无关键字new的区别

    function Person(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } const ...

  7. PP篇10 修改工单组件行

    CO_XT_COMPONENT_CHANGE 修改工单组件行 DATA : is_order_key TYPE coxt_ord_key, is_order_component_key TYPE co ...

  8. python实践项目四:猜数字游戏

    题目要求:在1-20中随机生成一个数字,你来猜,只有6次机会. 举例一: #!/usr/bin/python # -*- coding: UTF-8 -*- import random secretN ...

  9. sort_buffer_size, Sort_merge_passes关系

    对于事务性工作负载是通常最快这个大小设置为32K,并且也是允许的最小尺寸.您应该谨慎使用它设置为较大的值,因为这可以很容易地降低性能. 如果所有的数据进行排序不适合在指定缓冲区大小的MySQL第一种类 ...

  10. Qt deletelater函数分析(2)

       夫唯不争,故天下莫能与之争  -- 老子 在C++中,delete 和 new 必须 配对使用,Qt作为C++的库,显然是不会违背C++原则.但是,qt有自己的内存管理,有时候虽然使用了new, ...