Home  >  Article  >  Backend Development  >  Asp.net,C# encryption and decryption string

Asp.net,C# encryption and decryption string

巴扎黑
巴扎黑Original
2016-12-20 16:01:411514browse

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn