密钥,私钥,公钥的区分

首先明确几个基本概念:

1、密钥对在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。

2、公钥,公钥用来给数据加密,用公钥加密的数据只能使用私钥解密。

3、私钥,如上,用来解密公钥加密的数据。

4、摘要,对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得。

5、签名,使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。(看最下面的一部分就明白了)

6、签名验证,数据接收端,拿到传输文本,但是需要确认该文本是否就是发送发出的内容,中途是否曾经被篡改。因此拿自己持有的公钥对签名进行解密(密钥对中的一种密钥加密的数据必定能使用另一种密钥解密。),得到了文本的摘要,然后使用与发送方同样的HASH算法计算摘要值,再与解密得到的摘要做对比,发现二者完全一致,则说明文本没有被篡改过。

上面实际上介绍了加密解密和数字签名两个概念和实现过程,二者的过程正好是相反的。


公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),将其中的一个向外界公开,称为公钥;另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。

使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。

密钥分类

密钥分为两种:对称密钥与非对称密钥

对称密钥加密,又称私钥加密或会话密钥加密算法,即信息的发送方和接收方使用同一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。

非对称密钥加密系统,又称公钥密钥加密。它需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。

所以在实际的应用中,人们通常将两者结合在一起使用,例如,对称密钥加密系统用于存储大量数据信息,而公开密钥加密系统则用于加密密钥。

/*密钥指的是私钥或者公钥—>密钥=私钥/公钥;

密钥对,针对的是非对称加密—>密钥对=私钥+公钥

这样的话,整个思路就清晰了*/

既然是加密,肯定是不希望别人知道我的消息,所以只要我才能解密 
所以得出,公钥负责加密,私钥负责解密, 
同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名, 
所以得出,私钥负责签名,公钥负责验证.

/*这些是个人网上摘录并总结的*/


这只是大概说了作用,具体说来,涉及到密钥相关的东西。密钥有公钥和私钥之分。

那么这里一共有两组四个密钥:A的公钥(PUB_A),A的私钥(PRI_A);B的公钥(PUB_B),B的私钥(PRI_B)。

公钥一般用来加密,私钥用来签名。

通常公钥是公开出去的,但是私钥只能自己私密持有。

公钥和私钥唯一对应,用某个公钥签名过得内容只能用对应的私钥才能解签验证;同样用某个私钥加密的内容只能用对应的公钥才能解密。

这时A向B发送信息的整个签名和加密的过程如下:
1、A先用自己的私钥(PRI_A)对信息(一般是信息的摘要)进行签名。
2、A接着使用B的公钥(PUB_B)对信息内容和签名信息进行加密。


这样当B接收到A的信息后,获取信息内容的步骤如下:
1、用自己的私钥(PRI_B)解密A用B的公钥(PUB_B)加密的内容;
2、得到解密后的明文后用A的公钥(PUB_A)解签A用A自己的私钥(PRI_A)的签名。


从而整个过程就保证了开始说的端到端的唯一确认。A的签名只有A的公钥才能解签,这样B就能确认这个信息是A发来的;A的加密只有B的私钥才能解密,这样A就能确认这份信息只能被B读取。


总结:公钥和私钥是成对的,它们互相解密(密钥指公钥或私钥,密钥对指公钥加私钥)。

公钥和私钥都可以加密和解密

私钥数字签名,公钥验证。

(如下图

 

这个文本应该是写的比较详细的!后来我又补上去的这个图就能说明一切了

RSA加密/解密和签名/验签过程理解:https://www.jianshu.com/p/8dc4a5f64e06

### 关于公钥私钥在 Sphere 环境中的加密解密 #### 密钥层次结构与路径定义 在 Sphere 或其他支持 Hierarchical Deterministic (HD) 钱包标准的环境中,通过分层(树状结构)推导出来的秘钥通常用路径来表示。每个级别之间用斜杠 `/` 来表示,由主私钥衍生出的私钥起始以 `m` 打头。因此,第一个母密钥生成的子私钥是 `m/0`。第一个公共钥匙是 `M/0`。第一个子密钥的子密钥就是 `m/0/1`,以此类推[^1]。 #### BIP44 路径结构详解 对于遵循 BIP44 标准的情况,完整的派生路径可以被描述如下: - **根节点**: `m`: 表示整个密钥层级体系的起点。 - **目的用途**: `purpose=44'`, 固定值表明该路径遵循BIP44协议。 - **币种类型**: `coin_type`, 如比特币对应的是 `0'`,而以太坊则是 `60'`. - **账户编号**: `account`, 用来区分不同的逻辑账户。 - **变更状态**: `change`, 值为 `0` 的时候指代外部链上的地址(即用于接收资金),当其等于 `1` 则指向内部链上的找零地址。 - **地址索引**: `address_index`, 是具体某个地址在整个链条里的位置标识符。 #### 加密过程概述 在一个典型的加密场景下,发送方会利用接收者的公钥来进行消息或数据的加密处理。这确保只有持有相应私钥的一方才能够成功完成解密操作。假设 Alice 想向 Bob 发送一条经过加密的信息,则她需要获取并使用 Bob 提供给他人的公钥执行加密动作。 #### 解密流程解释 相对应地,在接收到已加密的数据之后,Bob 可以凭借自己保存着的秘密部分——也就是对应的私钥去解锁这些信息内容。由于非对称算法特性使得即便第三方截获到了传输过程中产生的任何中间产物也无法轻易还原原始资料除非掌握了正确的私钥副本。 #### 示例代码展示 下面给出一段简单的 Java 伪代码片段模拟上述提到的过程: ```java import java.security.KeyPair; import java.security.PrivateKey; import java.security.PublicKey; public class EncryptionExample { // 创建一对新的公私钥组合 KeyPair keyPair = generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); byte[] encryptedData = encryptMessage(publicKey, "Hello World".getBytes()); byte[] decryptedData = decryptMessage(privateKey, encryptedData); System.out.println(new String(decryptedData)); } ``` 请注意这段代码仅为示意性质,并未涉及实际的具体实现细节以及错误检查机制等内容。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值