Home > Article > Backend Development > Asp.net,C# encryption and decryption string
First add the following code under the web.config | app.config file:
the initial vector.
Key: The key of the encryption algorithm.
Then create a new class CryptoHelper as an encryption helper class.
First you need to get the IV and Key from the configuration file. So the basic code is as follows:
public class CryptoHelper
public class Cryp //private readonly string IV = ILGp6fl+3gXJvMsN4IajizYBBT";
private readonly string Key = string.Empty; public CryptoHelper()
"];
Key = ConfigurationManager.AppSettings["Key"];
After obtaining the IV and Key, you need to obtain the Service class that provides encryption services.
Here, the TripleDESCryptoServiceProvider class under the System.Security.Cryptography; namespace is used. Le The method of obtaining TripleDeScryptoserviceProvider is as follows:
//// & lt; Summary & gt;
/// Get the encryption service category
// & lt;/summary & gt;
/// & lt; return; /Return & GT; ()
TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider(); String(Key);
Two useful methods
CreateEncryptor: Create a symmetric encryptor object ICryptoTransform.
CreateDecryptor: Create a symmetric decryptor object ICryptoTransform
Encryptor objects and decryptor objects can be used by CryptoStream objects. to encrypt and decrypt streams.
The constructor of cryptoStream is as follows:
public CryptoStream(Stream stream, ICryptoTransform transform, CryptoStreamMode mode);
Use the transform object to convert the stream. The complete encrypted string code is as follows:
/// & lt; Summary & gt;
/// Get the encrypted string
//// & lt;/summary & gt;
/// & lt; param name = "inputvalue ">Enter value.
Public String Getencryptedvalue (String InputValue) {
TriptedesCryptoserViceProvider = This.getCryptoprovider (); The tightly stream
Memorystream mstream = New Memorystream ();
// Create an encrypted conversion flow
CryptoStream cStream = new CryptoStream(mStream,
use using UTF8 encoding to get the bytes of the input string. T byte [] toencrypt = New Utf8enCoding (). Getbytes (inputValue);
// Write the byte into the conversion flow.
cStream.Write(toEncrypt, 0, toEncrypt.Length); cStream.FlushFinalBlock(); cStream. . //Encode the encrypted bytes into 64-bit format.
Return { TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();
byte[] inputEquivalent = Convert.FromBase64String(inputValue);
// Create conversion flow.
CryptoStream csDecrypt = new CryptoStream(msDecrypt,
CryptoStreamMode.Write); 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());
}
}
}