非对称算法(公钥/私钥)
来源:互联网 发布:领跑网络兑换平台 编辑:程序博客网 时间:2024/05/29 17:28
首先无论采用何种算法,公钥与私钥都基于以下前提。
1,只有公钥可以解密,通过私钥加密的信息。
2,只有私钥可以解密,通过公钥加密的信息。所以公私钥必须成对使用。
3,通过私钥可以反推出公钥。
4,通过公钥很难反推出私钥。
5,公钥对外公开,私钥自己持有。
因此,我们制作出 公钥/私钥 对后,只将公钥公开给对方(乙方)。私钥只有自己(甲方)知道。
这样可以保证通过加密后的信息,只有甲方才能解密。但是有个问题,公钥容易泄露,第三方得到公钥后虽然不能解密信息。但可以冒充乙方向甲方发送伪消息。
为了解决这个问题,需要乙方也制作一套 公钥/私钥,然后将其制作的公钥公开给甲方。
然后按如下过程传递消息
1,乙方送消息:先用甲方提供的公钥加密
再用乙方制作的私钥加密(保证送消息的人是乙方)
2,甲方得到消息:先用乙方提供的公钥解密
再用甲方制作的私钥解密(保证只有甲方能读)
常用的RSA,利用大素数乘积的特性。
使用非对称算法除了可以用来加密,还可用作数字签名,用以判断文件(信息)有没有被别人动过。
方法很简单,将文件序列化,然后用甲方制作的私钥加密后,将加密结果连同文件。一起送给乙方。
乙方拿到文件和加密结果后,先用将加密结果用甲方提供的公钥解密,再将文件序列化。
对照两个结果,如一致,说明文件是甲方制作的。
当然,由于非对称算法的代价是对称算法的约1000倍,所以通常使用散列算法来代替序列化,对散列值进行加密。
常用的散列算法有SHAx,MD5
最后上一段.net 的非对称加密的代码
using System.Security.Cryptography;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { string sMsg = "The messgae to encrypt!"; string sEnc, sDec; System.Text.Encoding utf = new System.Text.UTF8Encoding(); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); RSAParameters publicKey = rsa.ExportParameters(false); RSAParameters publicAndPrivateKey = rsa.ExportParameters(true); { RSACryptoServiceProvider rsaEncryptor = new RSACryptoServiceProvider(); rsaEncryptor.ImportParameters(publicKey); byte[] bMsg = utf.GetBytes(sMsg); byte[] bEnc = rsaEncryptor.Encrypt(bMsg, false); sEnc = System.Convert.ToBase64String(bEnc); } { RSACryptoServiceProvider rsaDecryptor = new RSACryptoServiceProvider(); rsaDecryptor.ImportParameters(publicAndPrivateKey); byte[] bEnc = System.Convert.FromBase64String(sEnc); byte[] bDec = rsaDecryptor.Decrypt(bEnc,false); sDec = utf.GetString(bDec); } System.Console.WriteLine("Message :" + sMsg); System.Console.WriteLine("Encrypted :" + sEnc); System.Console.WriteLine("Decrypted :" + sDec); System.Console.ReadLine(); } }}
- 非对称算法(公钥/私钥)
- 公钥、私钥、数字签名、数字证书、对称与非对称算法、HTTPS
- 安全算法(二)对称加密和非对称加密
- Java非对称加密(DH算法)
- 非对称算法解释
- 非对称算法----RSA算法
- 对称加密 非对称加密,常见算法
- 大话https演化过程(对称加密、非对称加密、公钥、私钥、数字签名、数字证书)
- 非对称加密算法-DH算法
- 非对称加密算法-RSA算法
- 非对称加密算法-ElGamal算法
- 非对称加密算法-DH算法
- 非对称加密算法-DH算法
- 非对称加密---RSA算法
- SM2非对称密码算法
- 非对称加密 RSA算法
- 信息安全——对称算法与非对称算法(转)
- 浅谈IM软件业务知识——非对称加密,RSA算法,数字签名,公钥,私钥
- 一年了-_-
- Linux下设置双网卡
- linux下vi命令 修改文件及保存的使用方法
- C语言面试题——sizeof的注意点
- Spring指南
- 非对称算法(公钥/私钥)
- shell脚本里的引号简介
- C语言链表
- 信号量
- 例举self.Bind与self.button.Bind的差异
- Havok
- 一个修改注册表后立即生效的源码. 跟组策略一样的效果
- 关于C++中_finite()和_snprintf函数的说明
- RedHat Linux下MQ安装步骤及MQ常用命令