iT邦幫忙

1

甚麼情況下AES解密程式會突然失效?

  • 分享至 

  • xImage

最近我有發生一個網頁程式問題,這個程式是寄信程式,我把寄信的帳號密碼用AES方式加密後存到Web.Config,然後再AES解密讀出來,本來用很久了,都沒有問題,結果最近竟然突然不能寄信了,最後我發現問題就出在AES解密,解密出來竟然是空值,這樣子Email Adress變成空值就不能寄信了,可是明明已經用了一個月最近才突然出問題,程式語法如下:

      public string aesDecryptBase64(string SourceStr)
        {
            string decrypt = "";
            try
            {
                AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider();
                byte[] key = sha256.ComputeHash(Encoding.UTF8.GetBytes(CryptoKey));
                byte[] iv = md5.ComputeHash(Encoding.UTF8.GetBytes(CryptoKey));
                aes.Key = key;
                aes.IV = iv;

                byte[] dataByteArray = Convert.FromBase64String(SourceStr);
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(dataByteArray, 0, dataByteArray.Length);
                        cs.FlushFinalBlock();
                        decrypt = Encoding.UTF8.GetString(ms.ToArray());
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Debug("錯誤function:aesDecryptBase64,錯誤訊息:" + ex.InnerException + ex.ToString());
            }
            return decrypt;
        }

最近突然解密出來變成空值,我真的不知道為什麼會這樣,有高手知道可以回答我嗎?謝謝

看更多先前的討論...收起先前的討論...
ilwu iT邦新手 5 級 ‧ 2023-06-30 16:50:15 檢舉
傳入的 SourceStr 有印出來看看是不是有問題嗎? 比方說格式壞掉、變空白、有特殊字元等等
如果都沒問題, 你可以把這個方法單獨抽出來,跑 console 模式看有沒有問題
厚厚 iT邦新手 1 級 ‧ 2023-06-30 16:50:20 檢舉
解密出來變成空值?
會不會本來加密的值就是空值了...
ilwu iT邦新手 5 級 ‧ 2023-06-30 16:52:44 檢舉
或是檢查 CryptoKey 是不是被調整了
baltic iT邦新手 4 級 ‧ 2023-07-03 18:25:01 檢舉
不可能原本加密的值就是空值,本來解密功能都好好的,突然變成解密出來變空值
zcbxvsdf iT邦新手 5 級 ‧ 2023-07-05 13:45:46 檢舉
你decrypt宣告空值,應該是近到 catch 了,你要不要看一下 logger 印什麼?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
純真的人
iT邦大師 1 級 ‧ 2023-06-30 16:19:26
最佳解答

我不知道你程式碼發生哪種怪事~
通常程式碼出問題,我都每行編譯都抓出來網頁~確認編碼是否正常~

這個你要每行都列印出來除錯才知道~

例如我是VB寫法~每行都顯示執行的過程~
https://ithelp.ithome.com.tw/upload/images/20230630/20061369w4K5z3W3No.png

1
lacoste224
iT邦見習生 ‧ 2023-06-30 15:14:16

會不會是 System.Security.Cryptography.Algorithms.dll 被更動了?

baltic iT邦新手 4 級 ‧ 2023-06-30 15:31:59 檢舉

不太可能會更動,我中間有更新程式,但是不會更動到這個dll

我要發表回答

立即登入回答