首先在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());}}
}

使用例子:

原文地址:http://blogs.msdn.com/b/nikhiln/archive/2008/05/18/net-2-0-symmetric-encryption-code-sample.aspx

转载于:https://www.cnblogs.com/LoveJenny/archive/2011/06/15/2081116.html

Asp.net,C# 加密解密字符串相关推荐

  1. php字符串加密解密源码,PHP中加密解密字符串函数源代码

    PHP中加密解密字符串函数源代码: /** *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ / ...

  2. C#开发中关于加密解密字符串的使用方法

    C#开发中关于加密解密字符串的使用方法 C#加密解密字符串方法 首先在web.config | app.config 文件下增加如下代码: <?xml version="1.0&quo ...

  3. c语言字符串md5加密解密,.net core使用MD5加密解密字符串

    本文实例为大家分享了.net core使用MD5加密解密字符串的具体代码,供大家参考,具体内容如下 /// /// 加密 /// /// 要加密的文本 /// 秘钥 /// public static ...

  4. XXTea 加密/解密 字符串

    xxtea 加密和解密的参数都是字节数组, 开发中的加密内容和密钥一般是字符串, 于是自己写了一个类实现 XXtea 加密/解密字符串功能: 类:XXTeaUtil.java package xxte ...

  5. php 字符串缩短 解密,PHP的加密解密字符串函数

    程序中经常使用的PHP加密解密字符串函数 /********************************************************************* 函数名称:enc ...

  6. ASP的DES加密解密

    前两天学到对称密码DES算法,然后就自己亲手写了个实现程序出来,好多地方用得着呐.这里是用ASP实现,当然也就是可以移到VB啦.懂得怎样写后写成什么语言都行啦,只要懂得那门语言.如果有朋友想知道具体D ...

  7. Asp.net的加密解密技巧--[转载]

    对于加密和解密,我们都知道.下面主要介绍的是ASP.NET中的加密和解密. 一.数据加密/编码算法列表 常见用于保证安全的加密或编码算法如下: 1.常用密钥算法 密钥算法用来对敏感数据.摘要.签名等信 ...

  8. ASP.NET常用加密解密方法

    一.MD5加密解密 1.加密 C# 代码   复制 public static string ToMd5(string clearString) { Byte[] clearBytes = Syste ...

  9. java 字符串加密解密_Java加密解密字符串

    importjava.security.Key;importjava.security.Security;importjavax.crypto.Cipher;/*** DES加密和解密工具,可以对字符 ...

最新文章

  1. android bitmap 转drawable,android Drawable转换成Bitmap失败
  2. ORA-01109:数据库未打开(解决)
  3. PHP 打印调用堆栈信息
  4. APK 本地化和去广告
  5. 从源码分析DEARGUI之让table可以选中
  6. Java 项目权威排名:Spring生态抢镜,Gradle战胜Maven排第2,点击查看更多...
  7. jsp 页面显示格式化的日期
  8. Java中Connection方法笔记
  9. BZOJ 3156: 防御准备( dp + 斜率优化 )
  10. 如何用代码的方式取出SAP C4C销售订单创建后所有业务伙伴的数据
  11. ABAP源程序---发票校验明细表
  12. Python 学习之作用域
  13. 解决ajax方法内部不能给外部变量赋值的问题
  14. 浅谈代码的执行效率(2):编译器的威力 [摘自赵劼老师的博客]
  15. 这可能是关于Pytorch底层算子扩展最详细的总结了!
  16. java8 策略模式_Java 8中的策略模式
  17. 排队五小时才能吃上一口的Popeyes,要借阿里云数据中台10年内开足1500家门店
  18. JDK10 局部类型推断
  19. Linux 查看磁盘容量、查找大文件、查找大目录
  20. Java-虚拟机-垃圾收集器/垃圾收集算法/GCROOT根

热门文章

  1. 黄煦涛教授逝世:获誉华人AI视觉鼻祖、一代宗师,完美家庭楷模
  2. ListT 循环修改其中的数据
  3. 【OpenStack】OpenStack系列6之Sheepdog环境搭建
  4. C 语言 *** glibc detected *** free(): invalid next size (fast): 0x0000000000be1010 ***
  5. Oracle脚本批量导入时,输出日志文件
  6. 【08】Effective Java - 异常
  7. C++中 int char 的相互转换
  8. C# 调用WinRar解压压缩包
  9. Linux网络配置命令
  10. Tungsten Fabric SDN — Service Chain