流動的水沒有形狀,漂流的風找不到蹤跡,任何案件的 Coding 都取決於心
唯一看透真相的是,外表看似卜朧共,智慧卻低於常人的 名卜朧共 刻爛
(謎之音:把 Code 刻到爛簡稱刻爛.爛..爛...)
Music:
#表升半音 []表高八度
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 5 4 3 4 2 6 4 5 [2] [1] #6 6 5 6
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 4 3 2 4 2 6 4 5 [2] #6 6 5 6
口白:
刻爛:真実はいつも一つ!
環境:
https://rextester.com/ online
狀況:
該死的資安,這世界有什麼資料是重要的…
為了符合萬惡的資安!研究了C# 3DES的方法
要如何實做?問問谷哥吧…沒有谷哥罩…我就廢了…
問題:
什麼是 3DES 維基百科,自由的百科全書 定義如下:
密碼學中,三重資料加密演算法(英語:Triple Data Encryption Algorithm,縮寫為TDEA,Triple DEA),或稱3DES(Triple DES),是一種對稱密鑰加密塊密碼,相當於是對每個資料塊應用三次資料加密標準(DES)演算法。由於電腦運算能力的增強,原版DES密碼的金鑰長度變得容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的金鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼演算法。
對看透真相的卜朧共來說,這一點都不重要!
重要的是可以線上寫程式測試…是多美好的事…
在一次無意間發現了rextester.com 這個網站…
它可以線上編輯程式並執行,
對於從開始寫asp程式就用記事本寫的卜朧共來說,簡直是天堂般的存在…
這樣寫一些測試用的小程式,超便利的…
問谷哥找了一些文獻,寫了一段來測試…
程式碼如下:
//Rextester.Program.Main is the entry point for your code. Don't change it. //Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Security.Cryptography; using System.IO; namespace Rextester { public class Program { public static void Main(string[] args) { //string DESKEY="A1B2C3D4E56F7G8H1I2J3K4L5M6N7O8P1Q2R3S4T5U6V7W8X"; string DESKEY="A1B2C3D4E56F7G8H1I2J3K4L"; string txtSource="Hello, world!"; //Your code goes here Console.WriteLine(txtSource); string EncryptResult = Encrypt3DES(txtSource, DESKEY); Console.WriteLine(EncryptResult); string DecryptResult = Decrypt3DES(EncryptResult, DESKEY); Console.WriteLine(DecryptResult); } /// <summary> /// 使用3DES加密 /// </summary> /// <param name="strSource"></param> /// <param name="strKey">長度為24字元</param> /// <returns></returns> public static string Encrypt3DES(string strSource, string strKey) { TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider(); //DES.Key = UTF8Encoding.UTF8.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strKey, "md5").Substring(0, 24)); DES.Key = UTF8Encoding.UTF8.GetBytes(strKey.Substring(0, 24)); DES.Mode = CipherMode.ECB; //DES.Mode = CipherMode.CBC; ICryptoTransform DESEncrypt = DES.CreateEncryptor(); byte[] Buffer = UTF8Encoding.UTF8.GetBytes(strSource); return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length)); } /// <summary> /// 使用3DES解密 /// </summary> /// <param name="strEncryptData"></param> /// <param name="strKey">長度為24字元/param> /// <returns></returns> public static string Decrypt3DES(string strEncryptData, string strKey) { TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider(); //DES.Key = UTF8Encoding.UTF8.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strKey, "md5").Substring(0, 24)); DES.Key = UTF8Encoding.UTF8.GetBytes(strKey.Substring(0, 24)); DES.Mode = CipherMode.ECB; //DES.Mode = CipherMode.CBC; DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7; ICryptoTransform DESDecrypt = DES.CreateDecryptor(); string result = ""; byte[] Buffer = Convert.FromBase64String(strEncryptData); result = UTF8Encoding.UTF8.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length)); return result; } } }
圖片最下方那三段
第一段:Hello, world! 是顯示原始字串
第二段:uxu5I2SpRlAHUuRksyIPCA==
是3DES 加密 模式用 ECB
第三段:Hello, world! 解密囉
參考文獻:
1. 維基百科
2. [C# WinForm] 使用3DES 及金鑰加密及解密
3. 【C#.Net】使用 AES 演算法為字串加密解密
4. Android TripleDES encrypt/decrypt - 3DES加密(ECB Mode)
5. rextester.com