加密交易概念(一)哈希和签名

  任意的长度的输入(pre-image, 预映射)通过哈希算法变为固定输出,这个输出值就是哈希值。

  给定一个输入 x, 那个这个 x 通过哈希算法 hash(x) 的得到 y, 那么y就是x 的哈希值。

一、哈希(hash)

1.1、特性

  a. 抗原像性,不能逆转哈希函数;通过给定输出,不能确定输入。

   即即使有 哈希值,也不可能知道 输入 x 是什么;

  b. 第二抗原像性,如果得到一个特定的原像,不可能找到具有相同哈希输出的原像。

   即 每个输入的哈希值 是唯一的。

  c. 抗碰撞性, 是第二抗原像性一般形式;

   即 无法找到两个不同的输入但具有相同哈希值的值。

  d. 随机预言机性质;

   即输出是随机的,等价于随机生成器的输出; 

  

  一般知道的哈希算法有md5, 但在btc用的哈希是 sha256 而 以太坊用的是Keccak.

 

二、签名(signature)

  哈希函数另外一个作用是签名,抗量子攻击的签名。

  这个签名由两个部分组成,一个公钥,一个私钥。

  公钥是标识符,用于检查签名,并在网上公布,每个人都知道彼此的标识符。

  私钥就像密码,如果私钥被盗,那就相当于被偷家了。

  也就是每人个人都知道你的公钥,但私钥只有你知道。

2.1、签名函数

  签名函数有三个, generate_keys(), sign(), verify();

  generate_keys()  生成密钥函数, 创建新的签名;

  sign() 签名函数,用来签署文档;

  verify() 验证函数,其他人将验证你在文档上的签名;

2.2.1、generate_keys()  生成密钥函数使用

  用户A 通过 generate_keys()  获得了公钥和私钥;

generate_keys() {
   return(private_key, public_key)  
}
// 输出
// 公钥 Public key :0x8512 ....
// 私钥 Private key : 0xcd233....

       所有人都知道 上面的 公钥 0x8512 ...

       用户 A 会把 私钥 藏起来, 避免被使用;

 2.2.2、signature 签名函数使用

  用户A 通过密钥和信息通过使用签名函数 给特定的文档生成签名;

sign(message, private_key){
  return signature
}

  然后,网上的人都知道,这个文档是用户A发布的;

2.2.3、verify() 验证函数

  假设通过签名和文档分享给其他人,并进行验证;

  验证过程中,接受消息,公钥,输入标识符和签名并返回 true 或者 false 表示签名检查是否通过;

verify(messagae, pub_key, sig){
  return True/false  
}

 

  

-------------------------------------------------------------------------------------------------------------------------

转自:ETHPlanet公众号开课

          https://www.youtube.com/watch?v=XIsn8-5Xekc

  

  

 

posted @   apeNote  阅读(466)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示