几个基本概念:
加密:发送方利用接收方的公钥对要发送的明文进行加密。
解密:接受方利用自己的私钥进行解密。
公钥和私钥配对的,用公钥加密的文件,只有对应的私钥才能解密。当然也可以反过来,用私钥加密,用对应的公钥进行解密。
签名:发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,得到的就是这个报文对应的数字签名。通常来说,发送方会把数字签名和报文原文一并发送给接受者。过程示例如下图:
验签:接收方得到原始报文和数字签名后,用同一个哈希函数从报文中生成摘要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=...
本案例聚焦于"C#与Java平台RSA加密解密签名验签互通"的问题,这涉及到两个主要的技术点:RSA加密算法和跨平台兼容性。下面将详细阐述这两个知识点。 首先,RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和...
Java实现SM2、SM3和SM4加密解密签名验签工具包是针对我国自主设计的密码算法标准的编程实践。这些算法在信息安全领域扮演着关键角色,主要用于数据的加密、完整性保护以及身份验证。 首先,SM2算法是一种基于椭圆...
sm2测试加密解密签名验签性能代码(基于Gmssl)c语言
java 代码实现 获取keystore,cer文件中的私钥公钥,对数据进行加密解密验签签名
本文将详细讲解基于MIRACL大数库实现的SM2加密解密与签名验签工具在Delphi 7中的应用。SM2是中国国家商用密码算法标准之一,它是一种基于椭圆曲线密码学(ECC)的非对称加密算法,主要用于确保数据传输的安全性和...
实现了sm2加密功能,sm2解密功能,sm2签名功能,sm2验签功能,SM9算法加解密功能,SM9签名验签功能
在Android开发中,数据安全是至关重要的,尤其是在...通过以上步骤,您可以在Android应用中实现RSA加密解密和签名验签功能,确保数据的安全传输和验证。记住,安全无小事,合理的加密策略是保障应用安全的重要一环。
总的来说,该博客文章通过`RSAEncrypto.java`和`RSADecrypto.java`文件提供了使用Java进行RSA加密解密和签名验证的示例代码,涵盖了Sun JCE库和Bouncy Castle库的使用,这对于理解RSA加密机制和实践Java安全编程非常...
但是没有提供Delphi使用的RSA支持,delphi开发者使用起来还是有些麻烦,特别是RSA加解密及签名验证等等,因此我们开发了这个RSA控件,秩序简单的几个API就可以立即实现RSA的加解密及签名验证等功能。
本文将深入探讨如何使用OpenSSL库在C++中实现RSA加密、解密以及签名和验签功能,特别关注SHA256WithRSA这一安全强度更高的签名方法。 首先,RSA的核心原理是基于大整数因子分解的困难性。它包含一对密钥,即公钥和...
在这个项目中,开发者使用C语言和Visual Studio 2010创建了三个工具:ECC密钥生成器、ECC加密解密工具以及ECC签名验签工具,这些工具都基于OpenSSL库进行关键操作。 首先,ECC密钥生成器是用于创建ECC密钥对的核心...
在C#中实现RSA加密解密和签名验签,我们可以利用.NET框架提供的System.Security.Cryptography命名空间中的相关类。 1. RSA加密原理: RSA基于数论中的大数因子分解难题,即给定一个大合数N,找到它的两个素数因子p...
可执行jar文件,需要jdk环境,谢谢!RSA加密、解密、签名、验证签名工具。
3. 加密解密功能:可以快速对文件或文本进行RSA加密和解密。 4. 数字签名与验证:提供签名文件和验证文件签名的功能,确保数据的完整性。 5. 支持多种文件格式:不仅限于文本,还可能支持各种二进制文件的处理。 6. ...
因为加密解密都是用同一个密钥所以叫对称加密。 非对称加密是指:就是有2个密钥,一个是公钥,一个是私钥。私钥是自己的,不能随便给人,公钥随便给,无所谓。一般是别人用你的公钥加密,然后把密文给你,你用你的...
支持任何形式的aes加密,文件,字符,字节等,内含php代码,可以与php平台实现aes加密,而且包含rsa非对称加密签名验签实现,都是对字节数组的加密解密,签名验签,支持多种形式的的,可以将待操作的对象转换成字节...