您的位置:首页 > 编程语言 > C#

利用Base64对文本进行加密解密操作

2017-04-13 22:51 495 查看
有时候我们需要对数据进行加密解密,最常见的加密方法有MD5加密、Base64加密。而今天讲的是Base64加密解密方法,我们需要引用两个文件using System.Collections.Generic;和using System.Security.Cryptography;同时我们定义两个变量 KEY_64和IV_64来存放字符,这两个变量是加密和解密需要用到的,但这必须是8个字符且是64Bit。

例如如此定义变量:

private static string KEY_64 = "a4G28=Jk"; //必须是8个字符(64Bit)
private static string IV_64 = "JKbN=5[?"; //必须8个字符(64Bit)
解密的方法如下:
/// <summary>
/// 加密
/// </summary>
/// <param name="PlainText">未加密文本</param>
/// <returns></returns>
public static string Encrypt(string PlainText)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

StreamWriter sw = new StreamWriter(cst);
sw.Write(PlainText);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);

}
解密的方法如下:
/// <summary>
/// 解密
/// </summary>
/// <param name="CypherText">加密过的字符</param>
/// <returns></returns>
public static string Decrypt(string CypherText)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(CypherText);
}
catch
{
return null;
}

DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}
同时,你可以自定义自己的加密程序,比如字符中含有数字你可以对其进行加减乘除求余等数学操作,针对字符的可以进行ASCII处理,再或者利用高数的思想进行算法运算,解密则根据你自己定义的规则进行反算回来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# 加密 解密 base64 数据
相关文章推荐