• 数字签名,对称加密 非对称加密


    http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html  标题:数字证书原理

    这篇文章写的非常清楚,因为怕错过,所以特此记录一下

    下面是我自己的理解:

    a.公钥和私钥是用某种算法同时生成的,它们总是成对的出现,公钥是可以随意公开的,即使全世界都知道了也没有关系,但私钥必须自己保存。

    b.用公钥加密的信息有且仅有对应的私钥可以解密,用私钥加密的信息有且仅有对应的公钥可以解密。

    c.公钥用来加密,私钥用来解密;私钥用来签名,公钥用来验证签名。

    d.对称加密就是加密的密码和解密的密码是一样的,就和WINRAR加密的压缩包一样,非对称加密就是加密的密码和解密的密码不一样,就好像你用一个密码加密WINRAR压缩包,但解密的时候用的是另外一个密码,很神奇有没有。

    假设A有一个公钥和私钥,B有一个公钥和私钥。

    现在A想给B发送消息,可能的方法有以下几种方法:

    1.A把信息用A的公钥加密,A把信息发送给B,由于B没有A的私钥不能解密信息所以这种是不行的。

    2.A把信息用B的公钥加密,A把信息发送给B,B用自己的私钥解密信息。可行,虽然信息传递的过程中黑客可以获得密文,但这个过程中不可能获得B的私钥,所以解密不了信息。

    3.A把信息用A的私钥加密,A把信息发送给B,B用A的公钥解密,也行,但不太安全,因为A把信息发送给B的过程中,如果黑客截取到了密文,而A的公钥又是大家知道的,所以黑客就获得了信息,这样信息就泄露了加密也就没有了意义,我们加密不就是不希望别人看到信息或者篡改信息吗?

    4.A把信息用B的私钥加密?  A没有可能拿到B的私钥,所以这种方法行不通。

    仔细看一下3,这种方法虽然可能会泄露信息,但是却可以用来验证身份的,A把信息用A的私钥加密,又因为用私钥加密的信息有且仅有对应的公钥可以解密,所以只要有人能用A的公钥解密信息,那就说明了这个信息是用A的私钥加密的,不管是B用A的公钥解密的还是黑客用A的公钥解密的。这个过程中可能会泄露信息怎么办? 很简单,验证身份的过程我们传递的是不怕别人看到的数据,比如随机生成的100个字符串,爱怎么泄露怎么泄露,完全没有关系。 而要传递敏感信息我们就不用A的私钥加密信息了,应该用B的公钥加密。

    总结一下就是:

    A用B的公钥加密,B用自己的私钥解密,这是加密与解密。

    A用A的私钥加密,B用A的公钥解密,这是数字签名与身份验证,密文就叫数字签名,B能解密A的密文,所以验证了A就是A,这叫身份验证。

    有了数字签名与身份验证之后,上面A与B通信的过程就得改一改了。

    A:我想和你通信

    B:我想验证你的身份,请证明你是A。

    A :这是我用我的私钥加密过的一段信息,618B0A8DD5F2F002。

    B:我用你的公钥可以解密密文,证明你就是A。

    A:我也想验证你的身份,请证明你是B

    B:这是我用我的私钥加密过的一段信息,C56087F5B0FB776CE。

    A:我用你的公钥可以解密密文,证明你就是B。

    B:好的,现在我们可以通信了。

    A:好的。我用你的公钥加密了一段信息,5A74FE78157A930C3B3D70170D6C50F45,啥意思你懂的蛤。

    B:我用我的私钥解密了你刚才的那段信息,你的意思我都明白,可是明天真不行。我又用你的公钥加密了一段信息,647DF7010956AEA85ABEFCB413328808,你看这样行不行。

    A:我用我的私钥解密了刚才的信息,好吧,那就这样。

    B;嗯,好。

  • 相关阅读:
    POJ2456 Aggressive cows
    Binary Search
    Leetcode1025 Divisor Game
    我的高中生活目标
    leetcode155 min stack
    Leetcode983 Minimum Cost For Tickets
    合并两个有序数组
    X的平方根
    力扣第35场双周赛
    整数反转
  • 原文地址:https://www.cnblogs.com/yfish/p/6358792.html
Copyright © 2020-2023  润新知