永不言弃,简单就好
每一个付出,都有回报,永远不放弃
随笔- 110  文章- 0  评论- 29 
博客园  首页  新随笔  联系  管理  订阅 订阅
C#中对字符串加密解密(对称算法)

/// <summary>
/// 字符串加密组件
/// </summary>
public class Encrypt
{
    #region "定义加密字串变量"
    private SymmetricAlgorithm mCSP;  //声明对称算法变量
    private const string CIV = "Mi9l/+7Zujhy12se6Yjy111A";  //初始化向量
    private const string CKEY = "jkHuIy9D/9i="; //密钥(常量)
    #endregion

    /// <summary>
    /// 实例化
    /// </summary>
    public Encrypt()
    {
        mCSP = new DESCryptoServiceProvider();  //定义访问数据加密标准 (DES) 算法的加密服务提供程序 (CSP) 版本的包装对象,此类是SymmetricAlgorithm的派生类
    }

    /// <summary>
    /// 加密字符串
    /// </summary>
    /// <param name="Value">需加密的字符串</param>
    /// <returns></returns>
    public string EncryptString(string Value)
    {
        ICryptoTransform ct; //定义基本的加密转换运算
        MemoryStream ms; //定义内存流
        CryptoStream cs; //定义将内存流链接到加密转换的流
        byte[] byt;

        //CreateEncryptor创建(对称数据)加密对象
        ct = mCSP.CreateEncryptor(Convert.FromBase64String(CKEY), Convert.FromBase64String(CIV)); //用指定的密钥和初始化向量创建对称数据加密标准

        byt = Encoding.UTF8.GetBytes(Value); //将Value字符转换为UTF-8编码的字节序列

        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()); //将内存流转写入字节数组并转换为string字符
    }

    /// <summary>
    /// 解密字符串
    /// </summary>
    /// <param name="Value">要解密的字符串</param>
    /// <returns>string</returns>
    public string DecryptString(string Value)
    {
        ICryptoTransform ct; //定义基本的加密转换运算
        MemoryStream ms; //定义内存流
        CryptoStream cs; //定义将数据流链接到加密转换的流
        byte[] byt;

        ct = mCSP.CreateDecryptor(Convert.FromBase64String(CKEY), Convert.FromBase64String(CIV)); //用指定的密钥和初始化向量创建对称数据解密标准
        byt = Convert.FromBase64String(Value); //将Value(Base 64)字符转换成字节数组

        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()); //将字节数组中的所有字符解码为一个字符串
    }
}
/*
需引用如下命名空间:
System.Security.Cryptography;
System.IO;
*/

绿色通道:好文要顶关注我收藏该文与我联系
posted on 2008-11-27 11:17 嘎子 阅读(1070) 评论(0) 编辑 收藏
注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页。
首页博问闪存新闻园子招聘知识库
最新IT新闻:
· 美国空军拟最多购买1.8万台iPad 2
· 伊朗封杀Gmail和Facebook等互联网服务
· 分析称专利之争让谷歌苹果两败俱伤
· Android平台发现新型手机病毒Rootsmart
· HTC首款Android4.0手机大曝光
» 更多新闻...
最新知识库文章:
· 高级编程语言的发展历程
· 如何学习一门新的编程语言?
· 学习不同编程语言的重要性
· 为什么我喜欢富于表达性的编程语言
· 计算机专业的女生为什么要学编程
» 更多知识库文章...

China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
<2008年11月>
日一二三四五六
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
昵称:嘎子
园龄:3年3个月
粉丝:0
关注:0

搜索

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论
  • 我的标签

随笔分类

  • .NET学习笔记(4)
  • .NET源码(8)
  • UNIX、LINUX资料(28)
  • 其它(32)
  • 数据库(41)

随笔档案

  • 2011年11月 (1)
  • 2011年10月 (1)
  • 2011年9月 (2)
  • 2011年8月 (2)
  • 2011年7月 (1)
  • 2011年6月 (1)
  • 2011年5月 (2)
  • 2011年4月 (1)
  • 2011年1月 (1)
  • 2010年10月 (4)
  • 2010年9月 (2)
  • 2010年8月 (1)
  • 2010年7月 (1)
  • 2010年6月 (1)
  • 2010年5月 (4)
  • 2010年3月 (5)
  • 2010年2月 (5)
  • 2010年1月 (2)
  • 2009年12月 (4)
  • 2009年11月 (1)
  • 2009年10月 (6)
  • 2009年9月 (11)
  • 2009年8月 (2)
  • 2009年7月 (17)
  • 2009年6月 (2)
  • 2009年5月 (3)
  • 2009年4月 (4)
  • 2009年3月 (4)
  • 2009年2月 (2)
  • 2009年1月 (2)
  • 2008年12月 (7)
  • 2008年11月 (11)

好友Blog

  • eygle
  • 疯子
  • 浪曦视频在线

最新评论

阅读排行榜

评论排行榜

推荐排行榜

Copyright ©2012 嘎子