.Net加密算法主要分为:对称算法、非对称算法、哈希算法、随机算法。每种算法都有自己的使用场景,例如 保护隐私(防止查看)、保护完整性(防止更改)、数字签名、生成秘钥、秘钥交换、生成随机数等。按照不同场景,微软建议使用的算法如下:
数据隐私:Aes数据完整性:HMACSHA256、HMACSHA512数字签名:ECDsa、RSA密钥交换:ECDiffieHellman、RSA随机数生成:RandomNumberGenerator从密码生成密钥:Rfc2898DeriveBytes一、私钥加密私钥加密也称之为对称加密,因为使用的是相同的秘钥来加密、解密。对称加密是对流执行的,所以可以对大数据进行加密。对称加密速度比公钥加密速度快。对称算法要求创建秘钥和初始化向量(IV),秘钥必须保密、IV可以公开但应定期更改。常见的私钥加密有:DES、AES、HMACSHA256、HMACSHA384、HMACSHA512等。
using System;using System.Collections.Generic;using System.IO;using System.Net.; } }}二、公钥加密公钥加密也称之为非对称加密,因为使用的是可公开的公钥加密数据、受保护的私钥解密数据。公钥算法是对少数字节执行的,执行速度比私钥算法慢,所以只适用于少量数据的加密,并且设计的目的也不是用于大数据加密。公钥算法也可以用与数字签名,使用私钥签名数据,公钥验证签名。常见的公钥算法有:-方式
RSA:可用于加密数据和数字签名。DSA:只能用于数字签名,没有RSA安全。ECDiffieHellman:只能用于秘钥生成。ECDsausing System;using System.Collections.Generic;using System.IO;using System.Net.。-net
RSA:全称SHA1WithRSA,对RSA密钥的长度不限制,推荐使用2048位以上。RSA2:全称SHA256WithRSA,强制要求RSA密钥的长度至少为2048,比RSA更加安全。using System;using System.Collections.Generic;using System.IO;using System.Net.发现了漏洞不安全,不推荐使用。-方式
using System;using System.Collections.Generic;using System.IO;using System.Net.(); } }}五、随机数随机数生成是很多加密操作的必要组成部分。 例如,加密密钥需要尽可能的随机,以便使其很难再现。-net
using System;using System.Collections.Generic;using System.IO;using System.Net.(); } }}