加密和认证
首先我们需要区分加密和认证这两个基本概念。
加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。
公钥和私钥
其次我们还要了解公钥和私钥的概念和作用。
在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
公钥私钥的原则:
- 一个公钥对应一个私钥。
- 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
- 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
- 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。
基于公开密钥的加密过程
比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:
- Bob将他的公开密钥传送给Alice。
- Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
- Bob用他的私人密钥解密Alice的消息。
上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。
基于公开密钥的认证过程
身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。
还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身份认证的过程如下:
- Alice用她的私人密钥对文件加密,从而对文件签名。
- Alice将签名的文件传送给Bob。
- Bob用Alice的公钥解密文件,从而验证签名。
上面的过程可以用下图表示,Alice使用自己的私钥加密,Bob用Alice的公钥进行解密。
原文转自:http://www.williamlong.info/archives/837.html
相关推荐
亲测可用,可参考:https://blog.csdn.net/qq_37835111/article/details/87358779
公钥加密私钥解密,也可以说是 "公共密钥加密系统 " 私钥加密公钥解密,一般不这么说,应叫 "私钥签名,公钥验证 ",也可以说是“公共密钥签名系统” 再来说一下 "公共密钥签名系统 "目的:(如果晕就多看几遍,这个没...
可以直接运行成功的RSA加密解密示例 JAVA端采用公钥加密,服务端C#采用私钥解密。
Java 公钥和私钥加密解密源码,写了注释可以直接运行,测试没有问题
利用System.Numerics.BigInteger实现,私钥加密,公钥解密。兼容PKCS1填充方式。有效文件只有MyRSA.cs一个,其它文件是因为带了一个演示窗口。
RSA加密 非对称加密,有公钥和私钥之分,公钥用于数据加密,私钥用于数据解密 加密结果可逆
数据库密码的为了安全最后加密存放,这是一个RSA加密工具类。包含钥匙的生成和检测公钥私钥,具体看类说明,做Java或者Android可以直接拿来使用 非常方便!
有时候和其他系统对接的时候,对方...如果只有公钥指数和模数,那么就可实现公钥加密;如果是私钥指数和模数,就可以实现私钥解密。不依赖windows的那种xml格式的密钥文件。 完整的C#代码,Vs2008工程,可编译和测试。
C#使用公钥指数、私钥指数和模数进行私钥加密、公钥解密,可和Linux、Java配合加解密(比如C#加密,Java解密);C#使用的是BouncyCastle.Crypto进行加密及解密。测试过C#加密,用Linux C代码来解密,正常。 vs2008...
RSA为最常用的一种非对称方式的算法,这次封装的Utils类完成了公钥加密、私钥解密、私钥加签、公钥验签四种常用方法。
C# RSA 公钥加密,私钥解密,与大家分享,开发工具是VS2017
公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.zip
【delphiRSA加解密】支持RSA公钥加密私钥解密,RSA私钥加密公钥解密,秘钥格式支持PKCS8和PKCS1,D7~XE10可用
通过公钥加密,私钥解密的方式来实现接口数据的加密传输 https://blog.csdn.net/qianyer/article/details/89405224
推荐在线完成RSA加密解密的网站:https://the-x.cn/cryptography/Rsa.aspx ...公钥和私钥是在网上随机生成的,你也可以替换成你的密钥 同样你也可以更改密钥的文件名和密钥的长度类型 记得在cpp中做相应的更改
java中使用公钥加密私钥解密原理实现license控制
Java公钥私钥互相加密解密,使用公钥机密私钥解密,使用私钥加密公钥解密
RSA加密解密算法,可以实现现场的加密解密,可以更改公钥私钥。
java公钥加密私钥解密与数字证书,数字证书的生成看这里 http://hi.baidu.com/chenminliang/blog/item/2b30db24920ae0338744f9db.html
用于私钥加密 公钥解密用于私钥加密 公钥解密用于私钥加密 公钥解密