首先在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# 加密解密字符串的使用详解,有网友提问: 也就是说加密后的数据不再是:N8lAaHMFtSAQgaf3+RUFng== 希望encryptedString是”120387789370480938409832840923492384028934…”; 当然上面的...
本篇文章将深入探讨C# ASP.NET中字符串加密解密的类和方法,以及如何在实际项目中应用它们。 首先,我们要了解加密的基本概念。加密是将明文(可读数据)转化为密文(不可读数据)的过程,而解密则是相反的过程。在...
总结起来,Asp.net和C#中加密解密字符串主要涉及以下步骤: 1. 在配置文件中定义IV和Key。 2. 创建一个辅助类来处理加密解密,从配置文件读取IV和Key。 3. 使用`TripleDESCryptoServiceProvider`获取加密器和解密器...
总结来说,C# ASP.NET提供的加密解密机制为Web.config文件的安全提供了有力保障。通过合理使用`SectionInformation`类的方法,我们可以对敏感配置信息进行加密,从而防止未授权访问,同时在需要时解密以正常运行应用...
总之,ASP.NET中的DES加密解密涉及到对字符串数据的加密和解密,通过使用`DESCryptoServiceProvider`类,结合MD5哈希处理,实现了对数据的安全保护。尽管DES已不再是最安全的选择,但了解其原理和应用有助于理解加密...
`web.config`文件是ASP.NET应用程序的配置文件,可能包含了数据库连接字符串、应用程序设置以及安全相关的配置,例如身份验证和授权规则。其中,你可以找到与加密相关的配置项,比如机器密钥(MachineKey),它用于...
本文将深入探讨ASP.NET中自定义加密解密的方法,以及如何根据用户设定的密钥进行操作。 首先,我们要了解加密的基本原理。加密是将明文数据转化为无法理解的形式,即密文,而解密则是将密文恢复为原始的明文数据。...
三、C#加密解密步骤 1. **选择合适的加密算法**:根据应用场景,如数据量、安全性需求等选择合适的加密算法。 2. **生成密钥和初始化向量(IV)**:密钥是加密的核心,必须妥善保管。IV是某些块加密算法的必需参数,...
VS C#2013 DES加密解密完整源代码 测试平台 visual studio 2013 win8.1 依据网上资源整理,并亲测,并写出窗口供调用演示,原代码全部打包奉上,可供学习使用。 public static string EncryptDES(string ...
在.NET和C#环境中,MD5加密和解密源码涉及到的主要知识点包括MD5算法的基本原理、C#中的MD5类库使用以及加密和解密的实现过程。 1. **MD5算法基础** - **哈希函数**:MD5是一种非对称的单向哈希函数,它将任意长度...
字符串加密通常涉及密钥管理、加密解密过程以及安全编码实践,以防止数据泄露。 这些资源对于任何`ASP.NET`和`C#`开发者来说都是宝贵的财富,它们可以直接整合到项目中,加速开发进程,同时保证代码的稳定性和安全...
接下来将加密后的十六进制字符串重新转换为字节数组,并通过 `CryptoStream` 进行解密。最后,将解密后的字节数组转换回原始字符串。 ##### 2. VB.NET 示例代码简析 VB.NET 的示例代码没有给出完整的实现,但我们...
在ASP.NET中有非常简单的加密方法,WinForm中也有简单的加密算法,但是如果要实现加密后的密文反向解密,以上的方法都是做不到的。比如,如果你要用密码找回功能,以上方法加密过后,无法解析成明文。本类虽然比较...
WebConfigEncryptDecrypt.aspx和WebConfigEncryptDecrypt.aspx.cs这两个文件很可能是一个简单的ASP.NET Web应用程序,用于实现Web.config文件中数据库连接字符串的加密和解密功能。WebConfigEncryptDecrypt.aspx可能...
10. **安全性**:Asp.Net提供了身份验证、授权、加密解密等功能,确保应用的安全性。常见的身份验证模式有Windows身份验证、Forms身份验证和OAuth等。 这个"Asp.Net 完整实例"可能包含了一个典型的Asp.Net Web应用...
- `Web.config`、`Web.Release.config`、`Web.Debug.config`: 这些是ASP.NET应用程序的配置文件,用于控制不同环境下的应用设置,如连接字符串、编译选项等。 - `DESHelper.cs`、`Test.aspx.cs`: 这些可能是C#.NET...
本文档对ASP.NET面试题进行了详细的解释和分析,涵盖了 Session 存放、错误处理机制、数据绑定、字符串处理、Cookie 应用、IIS 版本支持、变量传递、浏览器地址栏传值、MD5 加密等多个方面的知识点。 一、Session ...
这个压缩包中的资源提供了丰富的C#基类源码,涵盖了ASP.NET类库、Active Directory(AD)用户和组的读取、通用(Common)类库、.NET基础类的全面集合、SqlHelper数据库操作基类以及字符串加密方法。下面我们将详细探讨...