`

证书签名验签以及加密解密

 
阅读更多

签名,验签的理解(转)

 

一、公钥加密
假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。

我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用
数字2,就是我的私钥,来解密。这样我就可以保护数据了。

我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,
只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。

 

二、私钥签名
如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知
道我的公钥是1,那么这种加密有什么用处呢?

但是我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他
解密看是不是c。他用我的公钥1解密,发现果然是c。
这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。
这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名

 

总结:公钥和私钥是成对的,它们互相解密。

公钥加密,私钥解密。

私钥数字签名,公钥验证。

 

举例

比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

  1. Bob将他的公开密钥传送给Alice。
  2. Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
  3. Bob用他的私人密钥解密Alice的消息。

  上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。



 例子和图出自《网络安全基础 应用与标准第二版》

RSA算法

RSA 公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够 抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对 其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。



 原文:http://blog.csdn.net/21aspnet/article/details/7249401#

  • 大小: 20.1 KB
  • 大小: 57.8 KB
分享到:
评论

相关推荐

    Java 实现RSA 签名/验签与加密解密

    6. 压缩包中的`signature`文件可能包含的是一个示例程序,演示了如何在Java中使用RSA进行签名、验签、加密和解密。这个程序可能会包括以下关键部分: - 导入必要的安全库 - 创建并初始化`KeyPairGenerator` - ...

    使用openssl 1.1.1版本,调试国密SM2签名、验签、加密解密、SM3

    OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法,最近的项目涉及到国密,又局限于资源有限,只能只能上了。

    C# RSA读取密钥文件pfx cer 签名验签加密解密帮助类

    总结一下,C#中处理RSA密钥文件,如pfx和cer,以及进行签名、验签、加密和解密,主要依赖于`System.Security.Cryptography`命名空间。此外,为了实现C#和Java之间的公钥私钥互转,我们需要理解不同的密钥表示形式并...

    XML/SOAP versign签名验签加密解密

    在涉及到安全通信时,VerSign签名、验签以及加密解密就显得至关重要。这些技术确保了数据在传输过程中的完整性和安全性。 XML签名是一种标准(RFC 3075),它提供了验证XML文档完整性和来源的方法。通过XML签名,...

    c# RSA读取密钥文件pfx cer 签名验签加密解密工具类 1 包含java形式密钥转换成c# c# 形式密钥转换成java

    7. **工具类设计**:`RSAHelper.cs`和`CertificateUtils.cs`很可能是提供各种RSA相关功能的工具类,如加载密钥、签名验签、加密解密等。`CertificateUtils`类很可能专注于处理证书相关的操作,而`RSAHelper`可能包含...

    .net与java中的互操作(rsa签名与验签、加密与解密)

    这些代码演示了.NET与Java间如何正确地进行RSA签名验证和加密解密。确保在实际应用中,安全地处理和存储密钥,遵循最佳实践,以防止密钥泄露导致的安全风险。 通过理解这些基本步骤,开发者可以在.NET和Java之间...

    RSA签名验签工具

    MD5常用于数据校验,但请注意,由于其安全性较低,不适用于加密或现代的安全需求,如证书签名。 支付宝的验签工具可能包含了以下功能: 1. 生成密钥对:工具可以生成RSA或RSA2密钥对,包括公钥和私钥。私钥用于...

    支付宝RSA加密签名验签工具

    - 数据加密解密:对需要发送给支付宝的数据进行RSA加密和解密。 - 签名与验签:对请求数据生成RSA签名,并验证支付宝返回的签名。 - 文件操作:可能支持对证书和私钥文件的导入导出。 5. **使用步骤** - 安装...

    国密算法SM2公私钥加解密及签名验签以及前端js sm-crypto

    本文将详细探讨SM2算法的原理、使用场景,以及在前端js中实现加解密和签名验签的方法,同时参考sm-crypto库的使用。 首先,SM2算法的核心是椭圆曲线加密,它利用椭圆曲线上的数学性质来构建公钥和私钥。公钥是可以...

    Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例

    本篇文章重点介绍如何利用Python3中的`Crypto`库实现RSA算法的加密解密以及签名与验签功能。通过具体代码示例帮助读者理解并掌握这些功能的具体实现方式。 #### 二、基础概念 ##### 2.1 非对称加密算法简介 非...

    中行PHP 签名验签demo

    在签名验签场景中,PKCS#7通常用于包含签名数据、证书以及可能的其他信息,形成一个结构化的签名消息。在这个PHP demo中,它可能被用来包装原始数据,然后使用私钥进行签名,或者接收已签名的数据并用公钥进行验证。...

    Java与.NET RSA加密解密(签名,验签)实例代码

    本实例代码着重于Java与.NET平台之间的RSA加密解密及签名验签操作,这对于跨平台的数据安全通信具有实际意义,例如与支付宝POS对接时。 1. **RSA算法基础**: RSA是一种基于大数因子分解困难性的公钥密码体制。它...

    java 数字签名验签

    - 可能包含证书管理,如加载、存储和解析X.509证书,以及处理密钥对的生成和导入。 - 可能提供了异常处理和日志记录功能,便于调试和监控。 - 考虑到安全性,项目可能还涉及证书链的验证和时间戳服务,确保签名的...

    java_PHP翼支付签名验签.zip

    "java_PHP翼支付签名验签.zip"这个压缩包文件包含的是关于Java和PHP如何实现翼支付平台的签名验证和证书认证的相关示例代码。这涉及到网络安全、数据加密以及支付接口的安全通信等多个关键知识点。 1. **签名验签...

    一个完整可用的证书签名(验签),加密(解密)java源码

    System.out.println("\n公钥加密——私钥解密"); byte[] encrypt = CertificateUtils.encryptByPublicKey(data.getBytes("utf-8"), certificatePath); String encode = base64Encoding(encrypt); System.out...

    原创 python国密算法SM2 + 加解密及签名验签 + 调用jar包demo

    原创 python国密算法SM2 + 加解密及签名验签 + 调用jar包demo 新鲜出炉,亲测可用。疑问可留言咨询。

    C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥

    C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 对应文章: http://blog.csdn.net/gzy11/article/details/54573973

    国密GMSSL,SM2密钥对、数字签名验签、加解密DLL,Delphi调用.rar

    它基于椭圆曲线上的离散对数难题,提供了高效的密钥生成、加密解密以及数字签名验签功能。与RSA等传统算法相比,SM2在相同安全级别下,其密钥长度更短,运算速度更快,更适合资源有限的嵌入式设备和移动终端。 在...

    python国密算法SM2 + 加解密及签名验签 + 可与java交互

    用于python与java之间,使用国密算法SM2加解密及签名验签

    RSA2--》加签+加密+解密+验签

    本文将详细讲解RSA算法的加签、加密、解密以及验签的过程,结合Java语言来实现这一系列操作,并涉及到证书的使用。 首先,我们需要理解RSA算法的基本原理。RSA算法基于两个大素数的乘积难以分解这一数学难题,生成...

Global site tag (gtag.js) - Google Analytics