黄子涵

1.3 加密技术

密码学是一门科学,它将易懂的、直白的内容转换成秘密的、隐藏的、无意义的内容,同样道理,解密就是反过来操作。加密技术有助于传输和保存数据,而且不能轻易地解密。

在计算机领域有两种类型的加密技术:对称加密和非对称加密。

  • 对称加密和解密:对称加密指的是在加密和解密过程中使用同一个密钥。如果使用这种技术交换信息,那么,这意味着很多人将使用同一个密钥。
  • 非对称加密和解密:在加密和解密过程中使用两个密钥。任一密钥都可以用于加密和解密。使用公钥加密的信息,可以使用私钥解密。使用私钥加密的信息,可以使用公钥解密。下面用一个例子来说明,Tom 使用 Alice 的公钥去加密一个信息,然后发送给 Alice,然后 Alice 可以使用她的私钥解密并从中提取原始信息。简单地说,使用 Alice 的公钥加密的信息只能被她自己独有的私钥解密,这就是非对称加密的常见应用场景 。

非对称加密还有一个用途就是数字签名 。

1.3.1 散列

散列是将输入的数据转换成一个固定长度的随机字符串(散列值)的过程,但是不能从结果反向生成或识别出原始数据,因此,散列也被称为数据指纹。几乎不可能基于其散列值导出输入数据哪怕原始数据发生了一点点的变化,也将产生完全不同的散列值,这样就确保了没有人敢在原始数据上做手脚。散列还有另外一个特征:虽然输入的字符串数据可能长短不同,但产生的散列值长度是固定的。例如,使用 SHA256 散列算法,不论输入数据的长度大小如何,总会产生一个 256 个字节的散列值。当数据量很大时,这一点就非常有用了,它总能产生一个 256 个字节的散列值,这样可以保存下来作为证据。以太坊在很多地方使用了散列技术,它会对每一笔交易进行散列,会对两个交易的散列值进行再次散列,最终为同一区块内的每个交易产生一个根散列值。

散列还有一个重要特征,就是从数学上来看,两个不同的输入数据不会产生同一个散列值。同样的道理,从计算上和数学上来说都不可能由散列值反推出输入值。

以太坊使用 Keccak256 作为它的散列算法。

下面的截图显示了散列的一个例子。输入的 Ritesh Modi 产生了一个散列值,如下图所示:

image

即使对输人数据进行轻微的变化,也将产生一个完全不同的散列值,如下图所示:

image

1.3.2 数字签名

非对称加密的一个重要应用就是在数字签名创建和验证时使用非对称密钥。数字签名类似于一个人在纸上手写的签名。与手写签名的作用一样,数字签名有助于识别一个人,还有助于确保信息在传递过程中不被篡改 。让我们举个例子来理解数字签名。

Alice 准备给 Tom 发送一条信息。那么问题来了,Tom 如何确保收到的信息是由 Alice 发出来的,如何确保信息在传递过程中没有被篡改过?解决方案就是不能发送原始的信息/交易,Alice 首先需要取得发送的信息的散列值,然后用她的私钥对散列值进行加密,最后,她把这个刚产生的数字签名附加在散列值后发送给 Tom。Tom 收到信息后,他使用 Alice 的公钥提取出数字签名并解密,找到原始散列值。同时,他从实际接收到的信息中提取散列值,并对两个散列值进行比较,如果两个散列值一致,那么说明信息在传递过程中没有被篡改过。

数字签名通常用于资产或加密数字货币(例如以太币)的所有者对交易进行签名确认 。

posted @   黄子涵  阅读(345)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示