区块链基础知识(上):区块链基本原理、加密哈希、公钥加密

目录

 

基本原理

加密哈希:

公钥加密:

希望有人向你发送只有你才能打开的加密文档/消息时使用 PKC

希望向其他人发送加密文档/消息并证明它确实由你发送时使用 PKC

使用 PKC 和加密哈希对文档/消息进行数字签名

 

交易哈希链使用数字签名转让数字资产所有权;每个交易记录都保留有对哈希链中上一个交易的加密反向链接

Merkle 树:


 

基本原理

区块链的基本原理理解起来并不复杂。首先来看三个基本概念:

  • 交易(Transaction):一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;

  • 区块(Block):记录一段时间内发生的所有交易和状态结果等,是对当前账本状态的一次共识;

  • 链(Chain):由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。

 

b723ab18124644cc9867767a4e4aeecd.png

想象一下你和一群爱借钱的朋友。每个人都有一本账本,上面记录着所有的交易和账户余额。这个账本是分布在每个人手里的副本,而不是交给某个人拿着账本。

每当有人想要进行一次交易,比如转账给其他人一定数量的金币,他们会把这个交易写在自己的账本上,并通知其他人。其他人会验证这个交易是否有效,比如检查发送人是否有足够的金币进行转账。如果交易被验证通过,它就会被添加到每个人的账本上,表示账本的状态发生了变化。

为了确保每个人的账本都保持一致,我们约定一些规则。首先,每个人在记录交易时必须按照相同的顺序进行,就像是按照时间顺序排队一样。其次,每个人会把自己已验证的交易打包成一个“区块”,并把这个区块连接到之前的区块上,形成一个链条。

现在,每个人都有了相同的账本副本,每个区块都记录了之前的区块的信息。这样,任何人都可以通过检查每个区块的信息来验证整个账本的有效性。如果有人试图篡改账本的某个区块,那么所有人都会注意到,因为区块的哈希值会发生变化,从而破坏了整个账本的连续性

这个共享账本游戏的关键在于共识。当有人想要添加一个新的区块时,其他人会一起参与确认这个区块的有效性,并达成共识。只有在达成共识后,新的区块才会被添加到每个人的账本上。

这就是区块链系统的运作原理。通过分布式的账本副本、按照特定的规则记录交易和形成区块链,区块链系统实现了一个安全、透明和去中心化的数据记录方式。

 

加密哈希

加密哈希的作用是创建一个唯一的指纹或标识,用于表示输入数据。无论输入数据有多大或多小,哈希函数都会生成相同长度的哈希值。这意味着即使输入数据发生微小的改变,生成的哈希值也会完全不同。

加密哈希有几个重要的特性。首先,它是单向的,意味着无法从哈希值还原出原始数据。这使得哈希值成为一种安全的方式来存储密码或其他敏感信息,因为即使黑客获得了哈希值,他们也无法轻松地将其转换回原始数据。

其次,加密哈希是不可逆的。这意味着无法通过观察哈希值来推断出输入数据的内容。哈希函数的设计使得即使输入数据发生微小的变化,其生成的哈希值也会有很大的差异。

最后,加密哈希应该是唯一的。这意味着不同的输入数据应该生成不同的哈希值。即使两个输入数据只有一个字节的差异,它们生成的哈希值也应该完全不同。

以下是使用 SHA-256 算法对各种长度的字符串进行哈希处理

7282137055674d2584454c960c2cc2fa.png

有时,哈希值会进行双重哈希处理。也就是说,通过应用第二轮 SHA-256 算法

213a09c7eb8a4d04bf42dd9090c8f91e.png

 

公钥加密:

希望有人向你发送只有你才能打开的加密文档/消息时使用 PKC

首先,我们来看一下公钥和私钥。公钥是可以被分享给其他人的密钥,而私钥是保密的,只有密钥的所有者知道。这两个密钥是通过数学算法生成的,它们之间有一个特殊的关系。

假设Alice想要向你发送一个加密的消息。你首先生成一对公钥和私钥,并将公钥发送给Alice。Alice使用你的公钥来加密她想要发送的消息。

现在,即使消息被加密,只有你拥有与公钥配对的私钥,才能解密消息。这是因为私钥是唯一能够解密使用公钥加密的消息的密钥。

e373c2fdeb5f4970a3e7432ded4055fb.png

希望向其他人发送加密文档/消息并证明它确实由你发送时使用 PKC

当你希望向其他人发送加密文档或消息,并且希望能够证明这些文档或消息确实是由你发送的时候,你可以使用公钥加密和数字签名这两个方法。

使用公钥加密时,你会生成一对密钥:公钥和私钥。你将公钥分享给其他人,而私钥只有你自己能够访问。其他人可以使用你的公钥来加密他们想要发送给你的文档或消息。一旦文档或消息被加密,只有你拥有的私钥才能解密它们,这样确保了只有你能够读取原始内容。

98605af08ddf407e81afdb2f15361e42.png

使用 PKC 和加密哈希对文档/消息进行数字签名

  1. 生成密钥对:首先,你需要生成一对密钥:公钥和私钥。通常,你会使用一个密钥生成算法来生成这对密钥。公钥可以与其他人分享,而私钥必须保持机密,只有你自己能够访问。

  2. 哈希处理:对于要进行数字签名的文档或消息,你需要使用加密哈希算法对其进行哈希处理。加密哈希算法会将文档或消息转换为一个固定长度的哈希值。常用的加密哈希算法包括SHA-256和SHA-512等。

  3. 私钥加密:使用你的私钥对哈希值进行加密。这个加密操作会生成一个数字签名,这个签名是唯一与你的私钥相关联的加密值。

  4. 发送签名和文档/消息:将数字签名和原始文档或消息一起发送给接收方。确保这些信息在传输过程中是安全的,以防止篡改。

  5. 公钥解密:接收方使用你的公钥对数字签名进行解密。解密操作将得到解密后的哈希值。

  6. 哈希验证:接收方使用相同的加密哈希算法对接收到的文档或消息进行哈希处理,得到一个新的哈希值。

  7. 比较哈希值:接收方将解密后的哈希值与新生成的哈希值进行比较。如果两个哈希值匹配,那么说明文档或消息没有被篡改过,并且数字签名有效。
    0f053a3b869941908131a29560b91f46.png

 使用 PKC 和加密哈希验证文档/消息

5298a3bb65be4948af2de4042c5ec32d.png

 

交易哈希链使用数字签名转让数字资产所有权;每个交易记录都保留有对哈希链中上一个交易的加密反向链接

交易哈希链是一种用于转让数字资产所有权的机制,它使用数字签名来验证交易的有效性,同时通过保留对上一个交易的加密反向链接来确保交易记录的完整性。

在交易哈希链中,每个交易都会被记录并与一个唯一的哈希值相关联。这个哈希值是通过对交易的内容进行加密哈希处理而生成的。这样做可以确保交易的完整性,因为即使交易的内容发生微小的更改,哈希值也会发生变化。

d6f5ce19a298473886c4d0b95cfab574.png

Merkle 树

Merkle 树是一种生成 Merkle 根哈希的二叉哈希树;此数据结构可以有效添加叶节点,并计算新 Merkle 根,而无需完全重新计算

aee50ed6b7cb4c2e970f435320dda66e.png

 

 

 

 

  • 40
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
### 回答1: 公钥可搜索加密是一种保护隐私的加密技术,可以在不暴露明文的情况下,对加密数据进行搜索和匹配。实现公钥可搜索加密的代码需要使用一些加密算法和数据结构,如RSA加密算法、Bloom Filter等。具体实现方法可以参考相关的论文和开源代码。 ### 回答2: 公钥可搜索加密(Public Key Searchable Encryption)是一种安全的加密方案,它可以在保证数据安全的同时,允许用户在加密数据中进行搜索操作。 实现公钥可搜索加密的代码需要考虑以下几个方面。 首先,需要使用公钥加密算法,如RSA或椭圆曲线加密算法,生成公钥和私钥对。公钥用于加密搜索关键字,私钥用于解密搜索结果。 其次,需要考虑如何将搜索关键字加密后存储在数据库中。可以使用加密哈希函数对搜索关键字进行加密,并将其与其他数据一起存储。加密哈希函数将关键字映射为固定长度的密文,保证了数据的安全性。 然后,需要实现一个搜索功能,使用户可以输入搜索关键字,并根据关键字对加密数据进行搜索。在搜索功能中,用户输入的搜索关键字需要先使用公钥加密算法加密,然后与数据库中存储的加密关键字进行匹配。匹配成功后,使用私钥解密搜索结果,返回解密后的数据。 最后,需要考虑数据的访问控制。只有拥有私钥的用户才能解密搜索结果,其他人无法获取明文数据。因此,代码中需要实现访问控制机制,确保数据的安全性。 总结来说,公钥可搜索加密的实现代码主要包括公钥加密算法的生成、搜索关键字的加密和存储、搜索功能的实现、搜索结果的解密以及数据的访问控制。这些代码的实现可以保证数据的安全性,并允许用户在加密数据中进行搜索操作。 ### 回答3: 公钥可搜索加密(Public Key Encryption with Keyword Search, PEKS)是一种能够实现关键字搜索的加密算法。在传统的公钥加密算法中,加密和解密是基于公钥和私钥的,只能通过私钥来进行解密操作。但是,当我们需要在大量加密数据中搜索包含特定关键字的文件时,传统的公钥加密算法就显得不太适用了。 公钥可搜索加密算法通过引入一个陷门(trapdoor)的概念,能够实现在加密状态下进行关键字搜索。陷门是由用户的私钥生成的,用于加密指定的关键字。通过陷门,用户可以在不暴露私钥的情况下,在加密的数据集合中查询包含特定关键字的文件。 实现公钥可搜索加密的代码通常由以下几个步骤组成: 1. 密钥生成:生成公钥和私钥对,公钥用于加密,私钥用于生成陷门。 2. 数据加密:将需要进行搜索的数据进行加密,并存储到云服务器或其他数据存储设备中。 3. 陷门生成:用户通过私钥生成陷门,将需要搜索的关键字加密成陷门的形式。 4. 关键字搜索:用户将生成的陷门发送到云服务器上,云服务器根据陷门与加密数据进行匹配,找出含有关键字的加密文件,并将其返回给用户。 需要注意的是,公钥可搜索加密算法并不直接泄露私钥,因此仍然能够保证用户的数据安全性。同时,为了提高搜索效率,通常会引入一些优化算法,例如倒排索引等。 公钥可搜索加密代码的实现需要理解公钥加密算法的基本原理,并结合关键字搜索的需求进行具体设计。近年来,该算法已经被广泛应用于云计算和数据隐私保护等领域,为数据安全和高效搜索提供了解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏泽SuZe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值