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());}}
}
使用例子:
原文地址: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# 加密解密字符串相关推荐
- php字符串加密解密源码,PHP中加密解密字符串函数源代码
PHP中加密解密字符串函数源代码: /** *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ / ...
- C#开发中关于加密解密字符串的使用方法
C#开发中关于加密解密字符串的使用方法 C#加密解密字符串方法 首先在web.config | app.config 文件下增加如下代码: <?xml version="1.0&quo ...
- c语言字符串md5加密解密,.net core使用MD5加密解密字符串
本文实例为大家分享了.net core使用MD5加密解密字符串的具体代码,供大家参考,具体内容如下 /// /// 加密 /// /// 要加密的文本 /// 秘钥 /// public static ...
- XXTea 加密/解密 字符串
xxtea 加密和解密的参数都是字节数组, 开发中的加密内容和密钥一般是字符串, 于是自己写了一个类实现 XXtea 加密/解密字符串功能: 类:XXTeaUtil.java package xxte ...
- php 字符串缩短 解密,PHP的加密解密字符串函数
程序中经常使用的PHP加密解密字符串函数 /********************************************************************* 函数名称:enc ...
- ASP的DES加密解密
前两天学到对称密码DES算法,然后就自己亲手写了个实现程序出来,好多地方用得着呐.这里是用ASP实现,当然也就是可以移到VB啦.懂得怎样写后写成什么语言都行啦,只要懂得那门语言.如果有朋友想知道具体D ...
- Asp.net的加密解密技巧--[转载]
对于加密和解密,我们都知道.下面主要介绍的是ASP.NET中的加密和解密. 一.数据加密/编码算法列表 常见用于保证安全的加密或编码算法如下: 1.常用密钥算法 密钥算法用来对敏感数据.摘要.签名等信 ...
- ASP.NET常用加密解密方法
一.MD5加密解密 1.加密 C# 代码 复制 public static string ToMd5(string clearString) { Byte[] clearBytes = Syste ...
- java 字符串加密解密_Java加密解密字符串
importjava.security.Key;importjava.security.Security;importjavax.crypto.Cipher;/*** DES加密和解密工具,可以对字符 ...
最新文章
- android bitmap 转drawable,android Drawable转换成Bitmap失败
- ORA-01109:数据库未打开(解决)
- PHP 打印调用堆栈信息
- APK 本地化和去广告
- 从源码分析DEARGUI之让table可以选中
- Java 项目权威排名:Spring生态抢镜,Gradle战胜Maven排第2,点击查看更多...
- jsp 页面显示格式化的日期
- Java中Connection方法笔记
- BZOJ 3156: 防御准备( dp + 斜率优化 )
- 如何用代码的方式取出SAP C4C销售订单创建后所有业务伙伴的数据
- ABAP源程序---发票校验明细表
- Python 学习之作用域
- 解决ajax方法内部不能给外部变量赋值的问题
- 浅谈代码的执行效率(2):编译器的威力 [摘自赵劼老师的博客]
- 这可能是关于Pytorch底层算子扩展最详细的总结了!
- java8 策略模式_Java 8中的策略模式
- 排队五小时才能吃上一口的Popeyes,要借阿里云数据中台10年内开足1500家门店
- JDK10 局部类型推断
- Linux 查看磁盘容量、查找大文件、查找大目录
- Java-虚拟机-垃圾收集器/垃圾收集算法/GCROOT根
热门文章
- 黄煦涛教授逝世:获誉华人AI视觉鼻祖、一代宗师,完美家庭楷模
- ListT 循环修改其中的数据
- 【OpenStack】OpenStack系列6之Sheepdog环境搭建
- C 语言 *** glibc detected *** free(): invalid next size (fast): 0x0000000000be1010 ***
- Oracle脚本批量导入时,输出日志文件
- 【08】Effective Java - 异常
- C++中 int char 的相互转换
- C# 调用WinRar解压压缩包
- Linux网络配置命令
- Tungsten Fabric SDN — Service Chain