打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
c#字符串加密与解密封装
NaturalWill
>《待分类1》
2014.12.27
关注
[csharp]
view plain
copy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace 字符串加密解密封装
{
/// <summary>
/// 字符串加密
/// </summary>
class Encryption_Decryption
{
static byte[] Key{get;set;}//加密的密钥
static byte[] Iv{get;set;} //加密的初始化矢量,初始化加密函数的变量。
static Encryption_Decryption()
{
//算法签名,这里我用的是TripleDES加密算法,TripleDESCryptoServiceProvider构造方法同时会初始化一组随机的key和IV。
TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();
Key=tDESalg.Key;
Iv=tDESalg.IV;
}
/// <summary>
/// 字符串加密
/// </summary>
/// <param name="encStr">需要加密的字符串</param>
/// <returns>一个已经加密的字符串的二进制流</returns>
public static byte[] EncStream(string encStr)
{
//将用户传进来的字符串转换成编码为UTF8的二进制流
byte[] encStrStream = Encoding.UTF8.GetBytes(encStr);
//建立一个MemoryStream,这里面存放加密后的数据流
MemoryStream mStream = new MemoryStream();
//使用MemoryStream和key,IV新建一个CryptoStream对象
CryptoStream cStream = new CryptoStream(mStream, new TripleDESCryptoServiceProvider().CreateEncryptor(Key, Iv), CryptoStreamMode.Write);
//将加密后的字节流写入到MemoryStream
cStream.Write(encStrStream, 0, encStrStream.Length);
//把缓冲区中的最后状态更新到MemoryStream,并清除cStream的缓存区
cStream.FlushFinalBlock();
// 把解密后的数据流转成字节流
byte[] ret = mStream.ToArray();
//关闭两个streams
cStream.Close();
mStream.Close();
return ret;
}
/// <summary>
/// 对加密二进制流进行解密
/// </summary>
/// <param name="byteStream">需要解密的二进制流</param>
/// <returns>返回一个已经解密的字符串</returns>
public static string DecStrStream(byte[] byteStream)
{
// 建立一个MemoryStream,这里面存放加密后的数据流
MemoryStream msDecrypt = new MemoryStream(byteStream);
// 使用MemoryStream 和key、IV新建一个CryptoStream 对象
CryptoStream csDecrypt = new CryptoStream(msDecrypt, new TripleDESCryptoServiceProvider().CreateDecryptor(Key, Iv), CryptoStreamMode.Read);
// 根据密文byte[]的长度(可能比加密前的明文长),新建一个存放解密后明文的byte[]
byte[] DecryptDataArray = new byte[byteStream.Length];
// 把解密后的数据读入到DecryptDataArray
csDecrypt.Read(DecryptDataArray, 0, DecryptDataArray.Length);
string DecStr = Encoding.UTF8.GetString(DecryptDataArray);
msDecrypt.Close();
csDecrypt.Close();
return DecStr;
}
}
class Program
{
//测试加密,解密都成功
static void Main(string[] args)
{
//加密测试
byte[] s = Encryption_Decryption.EncStream("你好");
foreach (byte b in s)
{
Console.WriteLine(b);
}
//解密测试
string ss = Encryption_Decryption.DecStrStream(s);
Console.WriteLine(ss);
Console.ReadKey();
}
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
保护自己的软件
使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据
字符串加密与解密
C#里的一些加密解密标准函数示例——DES,SHA1,RSA
C#一个字符串的加密与解密
用C#实现的数据加密(一) —— 对称加密算法
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×