通过密钥对字符串进行加解密(C#)

  视频上看到的例子,对着视频打了一遍代码,测试失败,上网搜索后改了一下测试成功,不知道为什么跟视频上打的一样的代码视频上测试的正确而我的测试出错的,先不管了,先记下来,以备后用!

/// <summary>字符串加解密
///
/// </summary>
public class Encrypt
{
private SymmetricAlgorithm mCSP;
private const string CIV = "oo*/^fsA"; //密钥, 只能是8位
private const string CKEY = "f123$dew"; //初始化向量, 只能是8位

public Encrypt()
{
mCSP = new DESCryptoServiceProvider();
}

/// <summary>加密字符串
///
/// </summary>
/// <param name="Value"></param>
/// <returns></returns>
public string EncryptString(string Value)
{
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
// 这里视频上用的是Convert.FromBase64String(CKEY/CIV),但是我用的话总是出现错误,什么大小不对
ct = mCSP.CreateEncryptor(Encoding.ASCII.GetBytes(CKEY), Encoding.ASCII.GetBytes(CIV));
byt = Encoding.UTF8.GetBytes(Value);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}

/// <summary>解密字符串
///
/// </summary>
/// <param name="Value"></param>
/// <returns></returns>
public string DecryptString(string Value)
{
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
ct = mCSP.CreateDecryptor(Encoding.ASCII.GetBytes(CKEY), Encoding.ASCII.GetBytes(CIV));
byt = Convert.FromBase64String(Value);

ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();

return Encoding.UTF8.GetString(ms.ToArray());
}
}

测试代码:

static void Main(string[] args)
{
Console.Write("请输入要加密的字符串:");
string str = Console.ReadLine();
Console.WriteLine("加密后:" + new Encrypt().EncryptString(str));
Console.ReadLine();

Console.Write("请输入要解密的字符串:");
string str2 = Console.ReadLine();
Console.WriteLine("解密后:" + new Encrypt().DecryptString(str2));
Console.ReadLine();
}

测试效果:
[img]/upload/attachment/122607/16725e74-fdff-3e43-89a8-6a57eb9e9499.jpg[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值