加密原始碼是在百-度經驗上找的 C# DES解密 和 C# DES加密
在上一章的“C#如何實作DES加密演算法”中建立的工程的基礎上(地址為:http://jingyan.baidu.com/article/c910274bc6f50bcd371d2d10.html),在類檔案EncryptDES.cs中添加如下方法:
/// <summary>
/// DES解密字串
/// </summary>
/// <param name="decryptString">待解密的字串</param>
/// <param name="decryptKey">解密密鑰,要求為8位,和加密密鑰相同</param>
/// <returns>解密成功回傳解密后的字串,失敗返源串</returns>
public static string DecryptDES(string decryptString, string decryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
//rgbIV與rgbKey可以不一樣,這里只是為了簡便,讀者可以自行修改
byte[] rgbIV = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch (Exception ex)
{
return decryptString;
}
}
雙擊該按鈕,進入代碼編輯界面,添加如下代碼,如圖。
string en = "C#如何實作DES加密演算法";
string result = EncryptDES.strEncryptDES(en, "hello,I am bianyuanhuanghun");
MessageBox.Show(result);
現在的問題是能解密 但測驗后發現前3個中文字(6個字符)會出現亂碼 后邊都正常
情況如下圖

加密密碼:codeexam
密文:RuZFkVLbyIdjn02U0zCeuNod4enfBR4rjJawFgPdEC74q56fmE9kXU9umGF6MGVTr9tq5d5JpRRMU+D2M3gxbOgfJnCHeDKD
解密:}DJ1的形式中,效力僅次于憲法的是( )。
正確解密:下列法的形式中,效力僅次于憲法的是( )。
幫忙看看亂碼是怎么回事啊!
uj5u.com熱心網友回復:
加密密碼是密鑰的意思嗎?uj5u.com熱心網友回復:
搜“BOM” ?uj5u.com熱心網友回復:
你測驗的流程不對,初步看起來好像還有base 64參與了,先用全00,對全00加密,結果在記憶體中查看,應該是//3des_encode_ecb ( , )
//--triple des ecb encrypt
//--key = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
//--plain = 00 00 00 00 00 00 00 00 cipher = 8C A6 4D E9 C1 B1 23 A7
//
//-----Final result --- 8C A6 4D E9 C1 B1 23 A7
//
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/111017.html
標籤:基礎類
