伊莉討論區

標題: C# MD5加密 遇到瓶頸 懇請幫助 [打印本頁]

作者: jhsdenny    時間: 2011-3-7 11:49 PM     標題: C# MD5加密 遇到瓶頸 懇請幫助

以下是程式碼  卻跑不出來  
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Security.Cryptography; //要先引用加解密類別

  6. namespace ConsoleApplication1
  7. {
  8.     class Program
  9.     {
  10.         private byte[] encrypt(string string_secretContent, string string_pwd)
  11.         {
  12.             
  13.             byte[] byte_secretContent = Encoding.UTF8.GetBytes(string_secretContent);
  14.             byte[] byte_pwd = Encoding.UTF8.GetBytes(string_pwd);

  15.             
  16.             MD5CryptoServiceProvider provider_MD5 = new MD5CryptoServiceProvider();
  17.             byte[] byte_pwdMD5 = provider_MD5.ComputeHash(byte_pwd);

  18.             
  19.             RijndaelManaged provider_AES = new RijndaelManaged();
  20.             ICryptoTransform encrypt_AES = provider_AES.CreateEncryptor(byte_pwdMD5, byte_pwdMD5);

  21.             
  22.             byte[] output = encrypt_AES.TransformFinalBlock(byte_secretContent, 0, byte_secretContent.Length);
  23.             return output;
  24.         }
  25.         private string decrypt(byte[] byte_ciphertext, string string_pwd)
  26.         {
  27.             
  28.             byte[] byte_pwd = Encoding.UTF8.GetBytes(string_pwd);

  29.             
  30.             MD5CryptoServiceProvider provider_MD5 = new MD5CryptoServiceProvider();
  31.             byte[] byte_pwdMD5 = provider_MD5.ComputeHash(byte_pwd);

  32.             
  33.             RijndaelManaged provider_AES = new RijndaelManaged();
  34.             ICryptoTransform decrypt_AES = provider_AES.CreateDecryptor(byte_pwdMD5, byte_pwdMD5);

  35.             
  36.             byte[] byte_secretContent = decrypt_AES.TransformFinalBlock(byte_ciphertext, 0, byte_ciphertext.Length);
  37.             string string_secretContent = Encoding.UTF8.GetString(byte_secretContent);
  38.             return string_secretContent;
  39.         }
  40.         static void Main(string[] args)
  41.         {
  42.             string string_secretContent = "test.txt";
  43.             string string_pwd = "0713";
  44.             //加密
  45.             byte[] byte_ciphertext = encrypt(string_secretContent, string_pwd);
  46.             //解密
  47.             string result = decrypt(byte_ciphertext, string_pwd);
  48.         
  49.         }
  50.     }
  51. }
複製代碼


先謝過 各位先進的幫助了
作者: arthurliuliu    時間: 2011-3-8 03:09 PM

回復 1# jhsdenny

哪裡跑不出來? 你這樣問應該不會有人想回答...
範例如下: (參考 msdn sample)
  1. MD5 md5Hasher = MD5.Create();
  2. byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(textBox1.Text));
  3. StringBuilder sBuilder = new StringBuilder();
  4. for (int i = 0; i < data.Length; i++)
  5. {
  6.     sBuilder.Append(data[i].ToString("x"));
  7. }
  8. textBox2.Text = sBuilder.ToString();
複製代碼

作者: jhsdenny    時間: 2011-3-8 08:32 PM

回復 2# arthurliuliu

很抱歉  我問的方式不對

也謝謝 arthurliuliu 大大 給我的頭緒

剛剛 完成了 沒想到 幾行的程式 就可以達到我要的簡單效果
[attach]52757012[/attach]

目前小弟繼續研究把 加密後內容 存到 檔案裡(小弟還未在 視窗程式內 用過開閉檔)

跟 看看有沒有可逆的加密方式

謝謝
作者: arthurliuliu    時間: 2011-3-8 11:01 PM

回復 3# jhsdenny

看你的畫面, 你加密之後,
應該還有再用 Convert.ToBase64String() 處理過,
不過都差不多啦~
md5 目前來說還是不可逆的,
在網路上是有看過 md5 破解的資料庫,
不過他應該是先有資料, 再產生 md5 字串, 存成資料庫,
直接逆向的話, 目前應該是還沒有~
作者: jhsdenny    時間: 2011-3-9 05:03 PM

回復 4# arthurliuliu
原來 還有資料庫的用法  真是增廣見聞  

此外  小弟目前遇到  亂數的瓶頸

想把 textBox 的 內容用亂數排序

目前發現沒有變化 正在努力研究中

  1. string[] temp = txt_Source.Lines;
  2.             double[] randomIndex = new double[temp.Length];
  3.             Random r = new Random(Guid.NewGuid().GetHashCode());
  4.             for (int i = 0; i < temp.Length; i++)
  5.             {
  6.                 randomIndex[i] = r.NextDouble();
  7.             }
  8.             Array.Sort(randomIndex, temp);
  9.             txt_Result.Lines = temp;
複製代碼





歡迎光臨 伊莉討論區 (http://www67.eyny.com/) Powered by Discuz!