首先在web.config | app.config 文件下增加如下代码:
<?xml version="1.0"?>
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;
///
///构造函数
///
public cryptohelper()
{
iv = configurationmanager.appsettings["iv"];
key = configurationmanager.appsettings["key"];
}
}
注意添加system.configuration.dll程序集引用。
在获得了iv 和key 之后,需要获取提供加密服务的service 类。
在这里,使用的是system.security.cryptography; 命名空间下的tripledescryptoserviceprovider类。
获取tripledescryptoserviceprovider 的方法如下:
///
/// 获取加密服务类
///
///
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 进行转换。
完整的加密字符串代码如下:
///
/// 获取加密后的字符串
///
/// 输入值.
///
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);
}
解密方法也类似:
///
/// 获取解密后的值
///
/// 经过加密后的字符串.
///
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"];
}
///
/// 获取加密后的字符串
///
/// 输入值.
///
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);
}
///
/// 获取加密服务类
///
///
private tripledescryptoserviceprovider getcryptoprovider()
{
tripledescryptoserviceprovider provider = new tripledescryptoserviceprovider();
provider.iv = convert.frombase64string(iv);
provider.key = convert.frombase64string(key);
return provider;
}
///
/// 获取解密后的值
///
/// 经过加密后的字符串.
///
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# 加密解密字符串
来源:这里教程网
时间:2026-02-21 13:06:38
作者:
编辑推荐:
- Asp.net,C# 加密解密字符串02-21
- 基于Servlet实现RMI突破防火墙02-21
- 应用绝对路径与相对路径02-21
- Web Page的生命周期详解02-21
- 用Hibernate实现分页查询02-21
- 构造函数不能为虚函数02-21
- 用C#生成不重复的随机数 - asp.net 教程02-21
- c#.net常用的小函数和方法集02-21
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- C#开发微信 二维码鼠标滑动 图像显示隐藏效果
C#开发微信 二维码鼠标滑动 图像显示隐藏效果
26-02-21 - .Net Core 下使用ZKWeb.System.Drawing实现验证码功能
- Flex与.NET互操作(二):基于WebService的数据访问(上)
Flex与.NET互操作(二):基于WebService的数据访问(上)
26-02-21 - .NET异步编程总结----四种实现模式代码总结
.NET异步编程总结----四种实现模式代码总结
26-02-21 - .NET原型模式讲解
.NET原型模式讲解
26-02-21 - .NET工厂方法模式讲解
.NET工厂方法模式讲解
26-02-21 - 继承的总结
继承的总结
26-02-21 - ASP.NET微信公众号之用户分组管理web页面
ASP.NET微信公众号之用户分组管理web页面
26-02-21 - .NET桥接模式讲解
.NET桥接模式讲解
26-02-21 - .NET适配器模式讲解
.NET适配器模式讲解
26-02-21
