http 数字签名

主要涉及到以下几个知识点:
公钥加密、私钥加密、数字签名。下面就要具体说一说。

公钥加密

假设 有两把锁。
A:公钥
B:私钥
明文数据内容 :i love you
加密后的密文 :go died
现在我用 A 对 “i love you” 进行加密,假设现在别人拿到了 加密后的数据 "go died " ,但是别人不知道 B 这把私钥 而没有办法知道 明文内容 。这样就可以有效的去保护数据了。

私钥加密

为啥还需要私钥进行加密了,为了知道你是你。怎么理解呢?
下面来说:
假设
A:私钥 (小红)(小明)
B:公钥(小红)(小明)(小黑)
明文数据内容 :i love you
加密后的密文 :go died
场景:假设小红和小明是情侣,小黑是个干坏事的。
现在 小黑 拿到了公钥 B ,把 “i hate you haha” ,通过 公钥 B 加密, 然后发送给 小红 ,小红用 A 解密 出来“i hate you haha”。这个时候小红一看 这说的是人话吗?找小明理论 ,小明躺枪 。我没有发这样的消息给你啊。
那么如何证明发送消息的是小明呢?并避免这种事情发生。

那么再来看 对"私钥签名" 就可以了。怎么做到的呢?
现在:
假设
A:私钥 (小红)(小明)
B:(小黑)
明文数据内容 :i love you
加密后的密文 :go died
通过上次事件。小明好好的想了想,怎么证明我是我呢?
现在小明用私钥(A)对 明文“i love you”进行解密运算 得到这个密文(这个过程叫做 "签名"),然后发送给小红,小红用小明给的私钥(A) 再进行加密得到了可读的明文数据。
如下图


http 数字签名_第1张图片
image.png

以上 特别需要注意的是:

因为有加密所以才有解密的过程他们必须成对的,
比如:
小明要发送的明文数据为:
"i love you " -> SKey(解密)-> "you love i" -> PKey(加密)->"i love you"。这个过程就是为了进行签名和核实身份。让小红知道这就是小明发过来的
同时也是为了说明: PKey 公钥是为了加密 为生的,SKey 私钥是为了解密而生的,他们之间相互作用,反过来也是成立的。不管是先加 加密还是后加密 他们都可以得出明文。

但是你们发现一个问题没有:
就是小明用私钥 对明文进行"解密"得到了密文,那么小黑可以通过 小明的公钥 然后进行 加密 而窃取到,小明给小红发的"明文数据"。这个时候该怎么处理呢?
上面有个场景 如果小黑窃取到了“数据” ,但是因为用公钥对明文进行加密,小黑拿到数据也无法知道具体明文内容。那么可以将两种场景合二为一。即不让小黑看得懂,也可以让小红知道是小明发的内容。
开始:公钥加密+明文 = 密文
认证:私钥解密+明文 = 密文
那么现在可以这么做:
((A私钥解密+明文) + B公钥加密) = 密文
((密文+A私钥解密)+B公钥加密) = 明文

有可能读到这里还是有些懵逼,那么再看一张图 帮助你理解 多看几遍 多体会:


http 数字签名_第2张图片
image.png

最后留一道课后题。为什么是先签名再加密,而不是先加密后签名呢?

你可能感兴趣的:(http 数字签名)