zoukankan      html  css  js  c++  java
  • JavaSE--[转]加密和签名的区别

    转载

    http://blog.csdn.net/u012467492/article/details/52034835

    私钥用来签名的,公钥用来验签的。公钥加密私钥解密是秘送,私钥加密公钥解密是签名


    就拿A给B发送经过签名加密信息来说:
    1、A对信息签名的作用是确认这个信息是A发出的,不是别人发出的;
    2、加密是对内容进行机密性保护,主要是保证信息内容不会被其他人获取,只有B可以获取。

    也就是保证整个过程的端到端的唯一确定性,这个信息是A发出的(不是别人),且是发给B的,只有B才被获得具体内容(别人就算截获信息也不能获得具体内容)。

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

    那么这里一共有两组四个密钥: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读取。
  • 相关阅读:
    1014 Waiting in Line (30)(30 point(s))
    1013 Battle Over Cities (25)(25 point(s))
    1012 The Best Rank (25)(25 point(s))
    1011 World Cup Betting (20)(20 point(s))
    1010 Radix (25)(25 point(s))
    1009 Product of Polynomials (25)(25 point(s))
    1008 Elevator (20)(20 point(s))
    1007 Maximum Subsequence Sum (25)(25 point(s))
    1006 Sign In and Sign Out (25)(25 point(s))
    1005 Spell It Right (20)(20 point(s))
  • 原文地址:https://www.cnblogs.com/microcat/p/7128608.html
Copyright © 2011-2022 走看看