加密交易概念(一)哈希和签名
任意的长度的输入(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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现