前言
最近呢又接触到加密了,回顾之前用到的加密经历,使用过DES、RSA、MD5、BASE64,前面也更新过两篇加密的文章,MD5加密和DES加密。之前的使用都是在.Net Framework平台,这次使用是在.Net Core项目中,所以借此机会记录下所学。
NETCore.Encrypt
.Net Core中使用加密需要NuGet一下NETCore.Encrypt包(目前最新版本为2.0.9),搜索后一看看到以下描述
NETCore encrypt and decrpty tool,Include AES,RSA,MD5,SAH1,SAH256,SHA384,SHA512
可以看到包含的加密方式有AES、RSA、MD5、SAH1、SAH256、SHA384、SHA512,简直不要太爽,包含多种加密方式,而且使用简单,下面来看看使用方式;
使用
首先认识下NETCore.Encrypt.EncryptProvider类,加密方式都在这个类下
DES
DES是对称加密,既然是对称加密,必然需要密钥,在DES加密中需要使用到KEY,在EncryptProvider下有EncryptProvider.CreateDesKey()方法可用生成KEY,可直接使用
var KEY = EncryptProvider.CreateDesKey(); var IV = EncryptProvider.CreateDesIv();
加密的方法有多个重载
public static string DESDecrypt(string data, string key); public static byte[] DESDecrypt(byte[] data, string key); public static byte[] DESDecrypt(byte[] data, string key, string vector); public static byte[] DESEncrypt(byte[] data, string key); public static string DESEncrypt(string data, string key); public static byte[] DESEncrypt(byte[] data, string key, string vector);
使用时只需要将待加密内容以及生成的KEY传进去即可
EncryptProvider.DESEncrypt(str, KEY);
EncryptProvider.DESEncrypt(byteData, KEY, IV);
AES
AES是一个对称密码,旨在取代DES成为广泛使用的标准,NETCore.Encrypt中使用方式与DES一样,首先是申请KEY、IV
var aeskey = EncryptProvider.CreateAesKey(); var KEY = aeskey.Key; var IV = aeskey.IV;
加密解密方法
public static string AESDecrypt(string data, string key, string vector); public static byte[] AESDecrypt(byte[] data, string key, string vector); public static string AESDecrypt(string data, string key); public static string AESEncrypt(string data, string key, string vector); public static byte[] AESEncrypt(byte[] data, string key, string vector); public static string AESEncrypt(string data, string key);
对数据进行加密解密
EncryptProvider.AESEncrypt(str, KEY, IV);
EncryptProvider.AESEncrypt(str, KEY);
EncryptProvider.AESDecrypt(encryptStr, KEY);
EncryptProvider.AESDecrypt(encryptStr, KEY, IV);
Base64
Base64是最常见的用于传递8Bit字节的编码方式,可在HTTP环境下传输较长的标识信息,具有不可读性,解码后可读,它的运用不在加密上,用它加密也没毛病。
public static string Base64Decrypt(string input); public static string Base64Decrypt(string input, Encoding encoding); public static string Base64Encrypt(string input, Encoding encoding); public static string Base64Encrypt(string input);
可以看到Base64加密解密有个Encoding类型参数,默认使用utf-8,也可以使用ASCII码
EncryptProvider.Base64Encrypt(str);
EncryptProvider.Base64Encrypt(str,Encoding.ASCII);
EncryptProvider.Base64Decrypt(str);
EncryptProvider.Base64Decrypt(str, Encoding.ASCII);
其他加密方式与其上使用大致,至于原理,如果感兴趣可以自己深入研究~