JavaSE--[转]加密和签名的区别

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

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

作者:CM Binder

就拿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读取。

时间: 2024-12-13 00:18:03

JavaSE--[转]加密和签名的区别的相关文章

关于RSA加密和签名的区别与联系

发现网上对于RSA加密和签名的介绍普遍偏向于使用和概念的说明,今天想说一点不一样的.对于加解密和签名的使用及概念就不再说了,不知道的请自行百度. 签名的本质其实就是加密,但是由于签名无需还原成明文,因此可以在加密前进行哈希处理.所以签名其实就是哈希+加密,而验签就是哈希+解密+比较. 签名过程:对明文做哈希,拼接头信息,用私钥进行加密,得到签名. 验签过程:用公钥解密签名,然后去除头信息,对明文做哈希,比较2段哈希值是否相同,相同则验签成功. 附上一段java代码,可见使用解密方法可以从签名中得

在 OS X 上使用 S/MIME 加密和签名邮件

邮件安全尤其值得关注,我已经不止一次见到过对邮件泄漏,篡改或者伪造的抱怨,比如: . 不管你是什么职业,学会使用加密邮件,并对邮件进行数字签名从而保证你的邮件不被接收者之外的人读取或恶意篡改,是每个人应该掌握的技能.这篇文章介绍了在 OS X 上使用 S/MIME 证书对你的邮件进行加密(encrypt)和数字签名(digital signing),相较于使用 GnuPG 收发加密邮件而言,使用 S/MIME 证书对邮件进行加密和签名要更加轻量级,对 GnuPG 的支持还要额外安装插件.此外,移

数据的加密与签名

转自:https://www.cnblogs.com/mddblog/p/5380556.html 一. 密码概述 发送者对明文进行加密然后生成密文,接受者再对密文解密得到明文的过程. 现在使用的所有加密算法都是公开的!但是密钥肯定不是公开的. 1 散列(哈希)函数 通常有MD5.SHA1.SHA256.SHA512 实质是抽取特征码,这样一般不会重复!是的,不同的文本它的哈希结果是有可能相同的,但概率很小.(举例:比如想要识别一个人,我们可以通过他的指纹来锁定他,指纹出现相同的概率很低吧!在这

使用 GPG 对数据进行加密解密签名

一:使用 GPG 对数据进行加密解密签名 基本的工具使用 1. GPG 是GNUPG 免费开源的gpg加密工具,和同pgp兼容,pgp收费. 2. 在mac上使用https://gpgtools.org/ 下载安装之后,打开GPG Keychain mac程序, 可以点击新建创建一份自己的公钥和私钥,并把公钥上传到开源服务器上,各服务器间数据同步: 创建完成之后!我们对一个文件加密,解密,签名验证签名就可以了! 选中文件,右键,服务里面即可看到支持的工具 3. 在 windows 上使用 htt

Java使用RSA加密解密签名及校验

由于项目要用到非对称加密解密签名校验什么的,于是参考<Java加密解密的艺术>写一个RSA进行加密解密签名及校验的Demo,代码很简单,特此分享! RSA加密解密类: package com.ihep; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; imp

网站安全系列文章(一)加密和签名

1. 加密概述 加密应用场景 1) 密码加密,常用于登录密码和支付密码等,此类加密的特点是希望密码加密之后不能被解密,因此可以比较安全的保存密码而不会泄漏明文,因此适合用不可逆加密算法,且不需要密钥,目前这类加密算法唯一的破解方法是暴力破解,即用密码字典等手段 不可逆的加密算法有md5 2) 网络传输报文加密 网络传输如果用明文,容易被截取,之后泄漏用户敏感信息,因此对于交易类等安全要求较高的报文传输,要对其进行加密,且要选择可逆的加密算法,服务端需要解密,可以选择的加密算法有rsa,3des等

RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密

原文:RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密 C#在using System.Security.Cryptography下有 DESCryptoServiceProvider RSACryptoServiceProvider  DESCryptoServiceProvider 是用于对称加密 RSACryptoServiceProvider是用于非对称加密  对称加密的意思:有一个密钥 相当于加密算法,加密用它来加

什么是硬件加密与软件加密,有什么区别?

硬件加密与软件加密的定义 1.硬件加密是通过专用加密芯片或独立的处理芯片等实现密码运算.将加密芯片.专有电子钥匙.硬盘一一对应到一起时,加密芯片将把加密芯片信息.专有钥匙信息.硬盘信息进行对应并做加密运算,同时写入硬盘的主分区表. 2.软件加密就是用户在发送信息前,先调用信息安全模块对信息进行加密,然后发送,到达接收方后,由用户使用相应的解密软件进行解密并还原. 硬件加密与软件加密的特点和区别 一.硬件加密具备以下特点: 1.使用安置在加密闪存盘上的专用处理器: 2.处理器包含一个随机生成器,该

互联网安全套路之加密、签名和证书

互联网在为我们的生活带来极大便利的情况下,也引入了很多安全隐患.比如信息在网络传输过程中可能会被黑客截取并篡改,这会带来很严重的后果.为了解决信息在网络传输过程中的安全问题,对应就产生了:加密算法.数字签名和数字证书. 一.加密算法 加密简单理解就是将一串需要传递的明文信息转换为密文信息后再进行传输.接收方收到密文后,再按照规律进行解密,得到原始的明文信息.在这个信息的传输过程中,如果被黑客截获,但是因为信息内容是密文,所以黑客也无法得知信息的具体内容,从而保障了信息的安全性. 加密算法可以分为