天天看點

DES加密概念使用實際運用

概念

DES全稱為Data Encryption Standard,即資料加密标準。1997年資料加密标準DES正式公布,其分組長度為64比特,密鑰長度為64比特,其中8比特為奇偶校驗位,是以實際長度為56比特。

使用

C#可以使用自帶的類庫簡單的完成DES加密,主要用到MemoryStream、 DESCryptoServiceProvide、 CryptoStream三個類。

Encoding.UTF8.GetBytes:轉換為UTF8編碼的位元組數組

DESCryptoServiceProvide:加密服務提供者類

MemoryStream:記憶體流

CryptoStream:将資料流連接配接到加密轉換的流

CreateEncryptor(btKey, btIV):使用指定的密鑰(btKey)和初始化向量 (btIV) 建立對稱加密器對象。

實際運用

public static string Encrypt(string sourceString, string key, string iv)
        {
            try
            {
                byte[] btKey = Encoding.UTF8.GetBytes(key);//用于對稱算法的密鑰
                byte[] btIV = Encoding.UTF8.GetBytes(iv);//用于對稱算法的初始化向量
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();  //執行個體化加密服務提供者類
                using (MemoryStream ms = new MemoryStream())
                {
                    byte[] inData = Encoding.UTF8.GetBytes(sourceString);
                    using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write))
                    {
                        cs.Write(inData, 0, inData.Length);
                        cs.FlushFinalBlock();//使用緩沖區的目前狀态更新基礎資料源或存儲庫,然後清除緩沖區。
                    }
                    return Convert.ToBase64String(ms.ToArray());
                }
            }
            catch
            {
                return sourceString;
            }
        }