论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Asp.net教程
Tag:静态页面,treeview,gridview,repeater,dataset,sqldatareader,ado.net,上传,三层,ajax,xml,留言本,新闻发布,商城,注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,触发器,socket,form认证,登录,视频教程

Asp.net,C# 加密解密字符串

文章类别:Asp.net | 发表日期:2011-11-24 9:01:37

以下是ASP.NET视频教程整理的“Asp.net,C# 加密解密字符串

首先在web.config | app.config 文件下增加如下代码:

  <?xml version="1.0"?>

  <configuration>

  <appSettings>

  <add key="IV" value="SuFjcEmp/TE="/>

  <add key="Key" value="KIPSToILGp6fl+3gXJvMsN4IajizYBBT"/>

  </appSettings>

  </configuration>

  IV:加密算法的初始向量。

  Key:加密算法的密钥。

  接着新建类CryptoHelper,作为加密帮助类。

  首先要从配置文件中得到IV 和Key.所以基本代码如下:

  public class CryptoHelper

  {

  //private readonly string IV = "SuFjcEmp/TE=";

  private readonly string IV = string.Empty;

  //private readonly string Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";

  private readonly string Key = string.Empty;

  /// <summary>

  ///构造函数

  /// </summary>

  public CryptoHelper()

  {

  IV = ConfigurationManager.AppSettings["IV"];

  Key = ConfigurationManager.AppSettings["Key"];

  }

  }

  注意添加System.Configuration.dll程序集引用。

  在获得了IV 和Key 之后,需要获取提供加密服务的Service 类。

  在这里,使用的是System.Security.Cryptography; 命名空间下的TripleDESCryptoServiceProvider类。

  获取TripleDESCryptoServiceProvider 的方法如下:

  /// <summary>

  /// 获取加密服务类

  /// </summary>

  /// <returns></returns>

  private TripleDESCryptoServiceProvider GetCryptoProvider()

  {

  TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();

  provider.IV = Convert.FromBase64String(IV);

  provider.Key = Convert.FromBase64String(Key);

  return provider;

  }

  TripleDESCryptoServiceProvider 两个有用的方法

  CreateEncryptor:创建对称加密器对象ICryptoTransform.

  CreateDecryptor:创建对称解密器对象ICryptoTransform

  加密器对象和解密器对象可以被CryptoStream对象使用。来对流进行加密和解密。

  cryptoStream 的构造函数如下:

  public CryptoStream(Stream stream, ICryptoTransform transform, CryptoStreamMode mode);使用transform 对象对stream 进行转换。

  完整的加密字符串代码如下:

  /// <summary>

  /// 获取加密后的字符串

  /// </summary>

  /// <param name="inputValue">输入值。</param>

  /// <returns></returns>

  public string GetEncryptedValue(string inputValue)

  {

  TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

  // 创建内存流来保存加密后的流

  MemoryStream mStream = new MemoryStream();

  // 创建加密转换流

  CryptoStream cStream = new CryptoStream(mStream,

  provider.CreateEncryptor(), CryptoStreamMode.Write);

  // 使用UTF8编码获取输入字符串的字节。

  byte[] toEncrypt = new UTF8Encoding()。GetBytes(inputValue);

  // 将字节写到转换流里面去。

  cStream.Write(toEncrypt, 0, toEncrypt.Length);

  cStream.FlushFinalBlock();

  // 在调用转换流的FlushFinalBlock方法后,内部就会进行转换了,此时mStream就是加密后的流了。

  byte[] ret = mStream.ToArray();

  // Close the streams.

  cStream.Close();

  mStream.Close();

  //将加密后的字节进行64编码。

  return Convert.ToBase64String(ret);

  }

  解密方法也类似:

  /// <summary>

  /// 获取解密后的值

  /// </summary>

  /// <param name="inputValue">经过加密后的字符串。</param>

  /// <returns></returns>

  public string GetDecryptedValue(string inputValue)

  {

  TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

  byte[] inputEquivalent = Convert.FromBase64String(inputValue);

  // 创建内存流保存解密后的数据

  MemoryStream msDecrypt = new MemoryStream();

  // 创建转换流。

  CryptoStream csDecrypt = new CryptoStream(msDecrypt,

  provider.CreateDecryptor(),

  CryptoStreamMode.Write);

  csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);

  csDecrypt.FlushFinalBlock();

  csDecrypt.Close();

  //获取字符串。

  return new UTF8Encoding()。GetString(msDecrypt.ToArray());

  }

  完整的CryptoHelper代码如下:

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Text;

  using System.Security.Cryptography;

  using System.IO;

  using System.Configuration;

  namespace WindowsFormsApplication1

  {

  public class CryptoHelper

  {

  //private readonly string IV = "SuFjcEmp/TE=";

  private readonly string IV = string.Empty;

  //private readonly string Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";

  private readonly string Key = string.Empty;

  public CryptoHelper()

  {

  IV = ConfigurationManager.AppSettings["IV"];

  Key = ConfigurationManager.AppSettings["Key"];

  }

  /// <summary>

  /// 获取加密后的字符串

  /// </summary>

  /// <param name="inputValue">输入值。</param>

  /// <returns></returns>

  public string GetEncryptedValue(string inputValue)

  {

  TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

  // 创建内存流来保存加密后的流

  MemoryStream mStream = new MemoryStream();

  // 创建加密转换流

  CryptoStream cStream = new CryptoStream(mStream,

  provider.CreateEncryptor(), CryptoStreamMode.Write);

  // 使用UTF8编码获取输入字符串的字节。

  byte[] toEncrypt = new UTF8Encoding()。GetBytes(inputValue);

  // 将字节写到转换流里面去。

  cStream.Write(toEncrypt, 0, toEncrypt.Length);

  cStream.FlushFinalBlock();

  // 在调用转换流的FlushFinalBlock方法后,内部就会进行转换了,此时mStream就是加密后的流了。

  byte[] ret = mStream.ToArray();

  // Close the streams.

  cStream.Close();

  mStream.Close();

  //将加密后的字节进行64编码。

  return Convert.ToBase64String(ret);

  }

  /// <summary>

  /// 获取加密服务类

  /// </summary>

  /// <returns></returns>

  private TripleDESCryptoServiceProvider GetCryptoProvider()

  {

  TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();

  provider.IV = Convert.FromBase64String(IV);

  provider.Key = Convert.FromBase64String(Key);

  return provider;

  }

  /// <summary>

  /// 获取解密后的值

  /// </summary>

  /// <param name="inputValue">经过加密后的字符串。</param>

  /// <returns></returns>

  public string GetDecryptedValue(string inputValue)

  {

  TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

  byte[] inputEquivalent = Convert.FromBase64String(inputValue);

  // 创建内存流保存解密后的数据

  MemoryStream msDecrypt = new MemoryStream();

  // 创建转换流。

  CryptoStream csDecrypt = new CryptoStream(msDecrypt,

  provider.CreateDecryptor(),

  CryptoStreamMode.Write);

  csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);

  csDecrypt.FlushFinalBlock();

  csDecrypt.Close();

  //获取字符串。

  return new UTF8Encoding()。GetString(msDecrypt.ToArray());

  }

  }

  }

  使用例子:

  

  

Asp.net,C# 加密解密字符串

视频教程列表
文章教程搜索
 
Asp.net推荐教程
Asp.net热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058