加解密算法二:非对称加解密

  加密和解密使用不同的密钥的一类加密算法。这类加密算法通常有两个密钥A和B,使用密钥A加密数据得到的密文,只有密钥B可以进行解密操作(即使密钥A也无法解密);相反,使用密钥B加密数据得到的密文,只有密钥A可以解密。这两个密钥分别称为私钥和公钥。私钥就是你个人保留,不能公开的密钥,而公钥则是公开给加解密操作的另一方的。根据不同用途,对数据进行加密所使用的密钥也不相同(有时用公钥加密,私钥解密;有时相反用私钥加密,公钥解密)。非对称加密的代表算法是RSA算法。  

    RSA算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。

  RSA算法实现主要分为三部分:公钥和私钥的产生、非对称加密和解密实现、数字签名和验证。

  

公钥和私钥的产生:

        string publickey, privatekey;
        RSACryptoServiceProvider rsaprovider;

        void Initial()
        {
            //声明一个RSA算法的实例,由RSACryptoServiceProvider类型的构造函数指定了密钥长度为1024位
            //实例化RSACryptoServiceProvider后,RSACryptoServiceProvider会自动生成密钥信息
            rsaprovider = new RSACryptoServiceProvider(1024);
            //将RSA算法的公钥导出到字符串PublicKey中,true 表示同时包含 RSA 公钥和私钥;false 表示仅包含公钥
            publickey = rsaprovider.ToXmlString(false);
            //将RSA算法的私钥导出到字符串PrivateKey中,true 表示同时包含 RSA 公钥和私钥;false 表示仅包含公钥
            privatekey = rsaprovider.ToXmlString(true);

        }

非对称加密和解密实现:

公钥加密,私钥解密(私钥加密、公钥解密算法一样):

      byte[] EncryptData(byte[] data)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
            //将公钥导入到RSA对象中,准备加密;
            rsa.FromXmlString(publickey);
            //对数据data进行加密,并返回加密结果;
            //第二个参数用来选择Padding的格式
            return rsa.Encrypt(data, false);
        }

        byte[] DecryptData(byte[] data)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
            //将私钥导入RSA中,准备解密;
            rsa.FromXmlString(privatekey);
            //对数据进行解密,并返回解密结果;
            return rsa.Decrypt(data, false);
        }
时间: 2024-10-27 19:22:45

加解密算法二:非对称加解密的相关文章

AES加解密算法Qt实现

[声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外,图片及部分解析来自http://zh.wikipedia.org/wiki/%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86.图1为个人劳动成果,请勿盗用此图. [简介] AES(Advanced Encryption Standard,

各种加解密算法比較

二.          加密算法介绍 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,经常使用的算法包含: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合. 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高. AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高: AES与3DES的比較 算法名称 算法类型

对称加解密算法解析

一.概述 cryptosystem密码学系统分为私钥系统及公钥系统. 私钥系统:指加解密双方事先做了私有信息约定,采用对称密钥算法: 公钥系统:指发送方用公开凭证对数据进行加密后传输,接收方使用私有凭证进行解密,采用非对称密钥算法: 对称加密分类 流加密(stream cipher),加密和解密双方使用相同伪随机加密数据流,一般都是逐位异或或者随机置换数据内容,常见的流加密算法如RC4. 分组加密加密(block cipher),也叫块加密,将明文分成多个等长的模块(block),使用确定的算法

C# 中使用 RSA加解密算法

一.什么是RSA RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制. 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的.加密算法E和解密算法D也都是公开的.虽然密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK.正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存:另一个为公开密钥

【转】各种加解密算法比较

转自: http://blog.csdn.net/pengzp/article/details/6556674 二.          加密算法介绍 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合. 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高. AES(Advanced Encryption Standard

加解密算法

加解密算法概述 工作中经常用到加解密算法大概有以下三种: 单项散列算法 对称散列算法 非对称散列算法 单项散列算法 由不定长的数据转化为固定长的字符串,代表有: sha1 sha1($str[,raw_out=false]);//算法不够复杂 raw_out默认为false,生成一个32位的加密串 如果为true,则生成一个16位的二进制流 md5 md5($str[,strict=false]) strict默认为false,生成一个32位的加密串 如果为true,则生成一个16位的二进制流

RSA 加解密算法

与DES不同,RSA算法中,每个通信主体都有两个钥匙,一个公钥一个私钥. 就是有2把钥匙1.使用publicKey可以对数据进行加密2.使用Key才能对数据进行解密单方向传输用公钥加密的数据,只有私钥能解开(可用于加密):同时,使用私钥加密的数据,只有公钥能解开(签名).但是速度很慢(比私钥加密慢100到1000倍),公钥的主要算法有RSA,还包括Blowfish,Diffie-Helman等 公钥与私钥1.权威数字认证机构(CA)给所有通信主体(个人或组织)颁发公钥和私钥,彼此配对,分别唯一.

加解密算法一:散列算法、对称加解密

.Net中的加解密操作所涉及的对象都在命名空间System.Security.Cryptography下,所以应先在程序中添加using System.Security.Cryptography. 1.散列算法: 用来产生一些数据片段(例如消息或会话项)的散列值的算法.好的散列算法具有在输入数据中的更改可以更改结果散列值中每个比特的特性:因此,散列对于检测在诸如消息等大型信息对象中的任何变化很有用.此外,好的散列算法使得构造两个独立的有相同散列的输入不能通过计算方法实现. 典型的散列算法包括 M

【网络安全】加解密算法最详解

数据签名.加密是前后端开发经常需要使用到的技术,应用场景包括不限于用户登入.数据交易.信息通讯等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的 签名加密算法来达到业务目标.常用的加密算法有: 对称加密算法: 非对称加密算法: 哈希算法,加盐哈希算法(单向加密): 数字签名. 使用加密签名算法,可以达到下面的安全目标: 保密性:防止用户的数据被读取: 数据完整性:防止数据被篡改: 身份验证:确保数据发自特定的一方. 对称加密 对称加密算法加密和解密时使用同一把秘钥.操作比较