转自http://lvbin0502.iteye.com/blog/1409802
几个基本概念:
加密:发送方利用接收方的公钥对要发送的明文进行加密。
解密:接受方利用自己的私钥进行解密。
公钥和私钥配对的,用公钥加密的文件,只有对应的私钥才能解密。当然也可以反过来,用私钥加密,用对应的公钥进行解密。
签名:发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,得到的就是这个报文对应的数字签名。通常来说,发送方会把数字签名和报文原文一并发送给接受者。过程示例如下图:
验签:接收方得到原始报文和数字签名后,用同一个哈希函数从报文中生成摘要A,另外,用发送方提供的公钥对数字签名进行解密,得到摘要B,对比A和B是否相同,就可以得知报文有没有被篡改过。过程示例如下:
其实, 数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。
很容易看得出来,数字签名技术有一个问题,就是原始报文是明文传输的,这对一些敏感内容来说通常是不合适的,所以有些时候,这两种技术会结合起来使用。
发送方用自己的私钥完成数字签名,然后再用接收方的公钥对报文进行加密,将数字签名和报文传送给接收方。
接收方在拿到密文和数字签名后,先用自己的私钥对密文进行解密,得到明文,然后再用发送方提供的公钥进行验签,确保发送方身份的准确性,以及报文并没有被篡改过。
这里还有一篇有关加密的文章写得很好。
http://security.group.iteye.com/group/wiki/2280-Non-symmetric-encryption-Digital-Signature
相关推荐
SM2算法可以生成密钥和公钥,支持SM2的签名和验签;AES加密解密,支持各种常用的堆成非对称的加密算法的加密解密和验签
但是没有提供Delphi使用的RSA支持,delphi开发者使用起来还是有些麻烦,特别是RSA加解密及签名验证等等,因此我们开发了这个RSA控件,秩序简单的几个API就可以立即实现RSA的加解密及签名验证等功能。
几行代码就搞定 php 非对称加密解密签名验签 $stime=microtime(true); #获取程序开始执行的时间 $ps=newRsa(); $str='我是谁,我在哪'; $crypt=$ps->privateEncrypt($str); echo $ps->publicDecrypt($crypt); $sign=...
Android之RSA加密解密签名验签,亲测可用,不能用退分!
C#与java平台RSA加密解密签名验签互通案例,解决RSA在C#与java加密算法不同导致验签不过情况
java代码实现sm2的加密解密签名验签,sm3加密,sm4加密
sm2测试加密解密签名验签性能代码(基于Gmssl)c语言
基于MIRACL大数库实现的国密2非对称加密解密、签名验签工具,使用Delphi 7编写
java 代码实现 获取keystore,cer文件中的私钥公钥,对数据进行加密解密验签签名
实现了sm2加密功能,sm2解密功能,sm2签名功能,sm2验签功能,SM9算法加解密功能,SM9签名验签功能
NULL 博文链接:https://chun521521.iteye.com/blog/2425300
但是没有提供Delphi使用的RSA支持,delphi开发者使用起来还是有些麻烦,特别是RSA加解密及签名验证等等,因此我们开发了这个RSA控件,秩序简单的几个API就可以立即实现RSA的加解密及签名验证等功能。
使用Openssl实现RSA的加密和解密过程;使用Openssl实现签名和验签过程;SHA256WithRSA签名验签过程;封装很好,一看就懂,直接使用!
用VS2010基于C语言写的ECC密钥生成器,ECC加密解密小工具,ECC签名验签小工具,密钥生成、签名验签是基于OpenSSl写的,加密解密是自己写的,另外用到的还有大数库等
C#写的RSA加密解密和签名验签的Demo,已通过测试,可运行调试
Delphi RSA加密,解密,签名.密钥对生成工具.与C,Java,php等互通加解密
一个简单的java使用RSA生成公私钥对 非对称加密解密 签名验签的过程,附带一个基本的加密工具类,有兴趣的朋友可以下载下来看看
PGP 加解密及签名验签示例
因为加密解密都是用同一个密钥所以叫对称加密。 非对称加密是指:就是有2个密钥,一个是公钥,一个是私钥。私钥是自己的,不能随便给人,公钥随便给,无所谓。一般是别人用你的公钥加密,然后把密文给你,你用你的...
支持任何形式的aes加密,文件,字符,字节等,内含php代码,可以与php平台实现aes加密,而且包含rsa非对称加密签名验签实现,都是对字节数组的加密解密,签名验签,支持多种形式的的,可以将待操作的对象转换成字节...