溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在Asp.net中對字符串進(jìn)行加密解密操作

發(fā)布時(shí)間:2021-03-01 16:27:51 來源:億速云 閱讀:167 作者:戴恩恩 欄目:開發(fā)技術(shù)

本文章向大家介紹怎么在Asp.net中對字符串進(jìn)行加密解密操作,主要包括怎么在Asp.net中對字符串進(jìn)行加密解密操作的使用實(shí)例、應(yīng)用技巧、基本知識點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下。

ASP.NET 是什么

ASP.NET 是開源,跨平臺(tái),高性能,輕量級的 Web 應(yīng)用構(gòu)建框架,常用于通過 HTML、CSS、JavaScript 以及服務(wù)器腳本來構(gòu)建網(wǎng)頁和網(wǎng)站。

首先在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。所以基本代碼如下

復(fù)制代碼 代碼如下:


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>
            ///構(gòu)造函數(shù)
            /// </summary>
            public CryptoHelper()
            {
                IV = ConfigurationManager.AppSettings["IV"];
                Key = ConfigurationManager.AppSettings["Key"];
            }
        }

注意添加System.Configuration.dll程序集引用。
在獲得了IV 和Key 之后,需要獲取提供加密服務(wù)的Service 類。

在這里,使用的是System.Security.Cryptography; 命名空間下的TripleDESCryptoServiceProvider類。

獲取TripleDESCryptoServiceProvider 的方法如下:

復(fù)制代碼 代碼如下:


/// <summary>
        /// 獲取加密服務(wù)類
        /// </summary>
        /// <returns></returns>
        private TripleDESCryptoServiceProvider GetCryptoProvider()
        {
            TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();

            provider.IV = Convert.FromBase64String(IV);
            provider.Key = Convert.FromBase64String(Key);

            return provider;
        }

TripleDESCryptoServiceProvider 兩個(gè)有用的方法

CreateEncryptor:創(chuàng)建對稱加密器對象ICryptoTransform.

CreateDecryptor:創(chuàng)建對稱解密器對象ICryptoTransform

加密器對象和解密器對象可以被CryptoStream對象使用。來對流進(jìn)行加密和解密。

cryptoStream 的構(gòu)造函數(shù)如下:

public CryptoStream(Stream stream, ICryptoTransform transform, CryptoStreamMode mode);

使用transform 對象對stream 進(jìn)行轉(zhuǎn)換。

完整的加密字符串代碼如下:

復(fù)制代碼 代碼如下:


/// <summary>
        /// 獲取加密后的字符串
        /// </summary>
        /// <param name="inputValue">輸入值.</param>
        /// <returns></returns>
        public string GetEncryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

            // 創(chuàng)建內(nèi)存流來保存加密后的流
            MemoryStream mStream = new MemoryStream();

            // 創(chuàng)建加密轉(zhuǎn)換流
            CryptoStream cStream = new CryptoStream(mStream,
            provider.CreateEncryptor(), CryptoStreamMode.Write);

            // 使用UTF8編碼獲取輸入字符串的字節(jié)。
            byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue);

            // 將字節(jié)寫到轉(zhuǎn)換流里面去。
            cStream.Write(toEncrypt, 0, toEncrypt.Length);
            cStream.FlushFinalBlock();

            // 在調(diào)用轉(zhuǎn)換流的FlushFinalBlock方法后,內(nèi)部就會(huì)進(jìn)行轉(zhuǎn)換了,此時(shí)mStream就是加密后的流了。
            byte[] ret = mStream.ToArray();

            // Close the streams.
            cStream.Close();
            mStream.Close();

            //將加密后的字節(jié)進(jìn)行64編碼。
            return Convert.ToBase64String(ret);
        }

解密方法也類似:

復(fù)制代碼 代碼如下:


/// <summary>
        /// 獲取解密后的值
        /// </summary>
        /// <param name="inputValue">經(jīng)過加密后的字符串.</param>
        /// <returns></returns>
        public string GetDecryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

            byte[] inputEquivalent = Convert.FromBase64String(inputValue);

            // 創(chuàng)建內(nèi)存流保存解密后的數(shù)據(jù)
            MemoryStream msDecrypt = new MemoryStream();

            // 創(chuàng)建轉(zhuǎn)換流。
            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代碼如下:

復(fù)制代碼 代碼如下:


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

            // 創(chuàng)建內(nèi)存流來保存加密后的流
            MemoryStream mStream = new MemoryStream();

            // 創(chuàng)建加密轉(zhuǎn)換流
            CryptoStream cStream = new CryptoStream(mStream,

            provider.CreateEncryptor(), CryptoStreamMode.Write);
            // 使用UTF8編碼獲取輸入字符串的字節(jié)。
            byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue);

            // 將字節(jié)寫到轉(zhuǎn)換流里面去。
            cStream.Write(toEncrypt, 0, toEncrypt.Length);
            cStream.FlushFinalBlock();

            // 在調(diào)用轉(zhuǎn)換流的FlushFinalBlock方法后,內(nèi)部就會(huì)進(jìn)行轉(zhuǎn)換了,此時(shí)mStream就是加密后的流了。
            byte[] ret = mStream.ToArray();

            // Close the streams.
            cStream.Close();
            mStream.Close();

            //將加密后的字節(jié)進(jìn)行64編碼。
            return Convert.ToBase64String(ret);
        }

        /// <summary>
        /// 獲取加密服務(wù)類
        /// </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">經(jīng)過加密后的字符串.</param>
        /// <returns></returns>
        public string GetDecryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();
            byte[] inputEquivalent = Convert.FromBase64String(inputValue);

            // 創(chuàng)建內(nèi)存流保存解密后的數(shù)據(jù)
            MemoryStream msDecrypt = new MemoryStream();

            // 創(chuàng)建轉(zhuǎn)換流。
            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());
        }
    }
}

到此這篇關(guān)于怎么在Asp.net中對字符串進(jìn)行加密解密操作的文章就介紹到這了,更多相關(guān)的內(nèi)容請搜索億速云以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持億速云!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI