日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3DES 加解密,对长度不限制

發布時間:2024/8/24 编程问答 41 如意码农
生活随笔 收集整理的這篇文章主要介紹了 3DES 加解密,对长度不限制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#region 3DES
/// <summary>
/// 3DES加密
/// </summary>
/// <param name="strString">需加密的字符串</param>
/// <param name="strKey">密匙</param>
/// <returns></returns>
public static string DES3Encrypt(string strString, string strKey)
{
strString = strString + "".PadLeft();
byte[] bMsg = Encoding.GetEncoding("GBK").GetBytes(strString); int l = (bMsg.Length / + ) * ;
byte[] btMsg = new byte[l];
Array.Copy(bMsg, btMsg, bMsg.Length); byte[] digestOfPassword = Encoding.Default.GetBytes(strKey);
byte[] keyBytes = new byte[];
Array.Copy(digestOfPassword, keyBytes, digestOfPassword.Length);
for (int j = , k = ; j < ; )
{
keyBytes[k++] = keyBytes[j++];
}
TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
DES.Mode = CipherMode.ECB;
ICryptoTransform DESEncrypt = DES.CreateEncryptor(keyBytes, keyBytes);
var dd = DESEncrypt.TransformFinalBlock(btMsg, , btMsg.Length);
return byte2hex(dd).ToString().Substring(, (bMsg.Length / + ) * );
} public static String getAdd(int length, String strKey)
{
byte[] btMsg = new byte[length / ]; byte[] digestOfPassword = Encoding.UTF8.GetBytes(strKey);
//byte[] digestOfPassword = Encoding.Default.GetBytes(strKey);
byte[] keyBytes = new byte[];
Array.Copy(digestOfPassword, keyBytes, digestOfPassword.Length);
for (int j = , k = ; j < ; )
{
keyBytes[k++] = keyBytes[j++];
} TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
DES.Mode = CipherMode.ECB;
ICryptoTransform DESEncrypt = DES.CreateEncryptor(keyBytes, keyBytes);
var dd = DESEncrypt.TransformFinalBlock(btMsg, , btMsg.Length);
String rtn = byte2hex(dd);
return rtn.Substring(length);
} /// <summary>
/// 字節數組轉16進制字符串
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
private static string byte2hex(byte[] dd)
{
StringBuilder ret = new StringBuilder();
foreach (var item in dd)
{
ret.AppendFormat("{0:X2}", item);
}
return ret.ToString();
}
/// <summary>
/// 字符串轉16進制字節數組
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
private static byte[] strToToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % ) != )
hexString += " ";
byte[] returnBytes = new byte[hexString.Length / ];
for (int i = ; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * , ), );
return returnBytes;
}
/// <summary>
/// 3DES解密
/// </summary>
/// <param name="strString">需解密的字符串</param>
/// <param name="strKey">密匙</param>
/// <returns></returns>
public static string DES3Decrypt(string strString, string strKey)
{
strString += getAdd(strString.Length, strKey); byte[] digestOfPassword = Encoding.Default.GetBytes(strKey);
byte[] keyBytes = new byte[];
Array.Copy(digestOfPassword, keyBytes, digestOfPassword.Length);
for (int j = , k = ; j < ; )
{
keyBytes[k++] = keyBytes[j++];
}
TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
DES.Mode = CipherMode.ECB;
ICryptoTransform DESDecrypt = DES.CreateDecryptor(keyBytes, keyBytes);
string result = "";
try
{
byte[] Buffer = strToToHexByte(strString);
byte[] bb = DESDecrypt.TransformFinalBlock(Buffer, , Buffer.Length);
result = Encoding.GetEncoding("GBK").GetString(bb);
}
catch (Exception e)
{
throw e;
}
return result;
}
#endregion

2015-1-13 添加

在我傳遞key時,出現

查資料,原來是key的長度大于24了,(IV則是8位,但我沒有傳遞)

修改后的3DES算法

#region 3DES
/// <summary>
/// 3DES加密
/// </summary>
/// <param name="strString">需加密的字符串</param>
/// <param name="strKey">密匙</param>
/// <returns></returns>
public static string DES3Encrypt(string strString, string strKey)
{
byte[] bMsg = Encoding.UTF8.GetBytes(strString);
TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
DES.Mode = CipherMode.ECB; string key = strKey;
while (key.Length < )
{
key += strKey;
}
byte[] digestOfPassword = Encoding.UTF8.GetBytes(key);
byte[] keyBytes = new byte[];
Array.Copy(digestOfPassword.Take().ToArray(), keyBytes, digestOfPassword.Take().ToArray().Length); DES.Key = keyBytes;
ICryptoTransform DESEncrypt = DES.CreateEncryptor();
var dd = DESEncrypt.TransformFinalBlock(bMsg, , bMsg.Length);
return Convert.ToBase64String(dd);
} /// <summary>
/// 3DES解密
/// </summary>
/// <param name="strString">需解密的字符串</param>
/// <param name="strKey">密匙</param>
/// <returns></returns>
public static string DES3Decrypt(string strString, string strKey)
{
TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
DES.Mode = CipherMode.ECB;
string key = strKey;
while (key.Length < )
{
key += strKey;
}
byte[] digestOfPassword = Encoding.UTF8.GetBytes(key);
byte[] keyBytes = new byte[];
Array.Copy(digestOfPassword.Take().ToArray(), keyBytes, digestOfPassword.Take().ToArray().Length);
DES.Key = keyBytes;
ICryptoTransform DESDecrypt = DES.CreateDecryptor();
string result = "";
try
{
byte[] Buffer = Convert.FromBase64String(strString);
byte[] bb = DESDecrypt.TransformFinalBlock(Buffer, , Buffer.Length);
result = Encoding.UTF8.GetString(bb);
}
catch (Exception e)
{
throw e;
}
return result;
}
#endregion

總結

以上是生活随笔為你收集整理的3DES 加解密,对长度不限制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜在线一区二区三区 | 污污内射久久一区二区欧美日韩 | 精品国产乱码久久 | www在线看| 欧美三级在线观看视频 | 91资源在线视频 | 亚洲蜜桃精久久久久久久久久久久 | 精品一区电影国产 | 日韩国产小视频 | 亚洲黄片一区二区三区 | 日本精品视频一区二区三区 | 婷婷五月在线视频 | 成av人片一区二区三区久久 | 狼人伊人久久 | 红桃视频一区 | 天堂一二三区 | 国产爽爽爽 | 亚洲天堂毛片 | 侵犯亲女在线播放视频 | 精品久久香蕉国产线看观看亚洲 | 亚洲综合视频网站 | 精品久久久久久亚洲综合网站 | 久国产 | 日韩理论在线观看 | 欧美一区二 | 无码精品人妻一区二区三区影院 | 日韩黄色片免费看 | 91狠狠操 | 免费观看的毛片 | 日韩三级免费 | 日韩欧美视频免费在线观看 | 美女被啪羞羞粉色视频 | 亚洲成人av一区 | 成人人伦一区二区三区 | 欧美另类tv | 久久人妻少妇嫩草av无码专区 | 女人床技48动态图 | 成人精品视频在线 | 国产成人精品电影 | 好吊视频一区二区 | 五月天av在线 | 久草香蕉视频 | 国产自产在线 | 成人深夜电影 | 狠狠干影视 | 欧美aa在线 | 美女扒开屁股让男人捅 | 色超碰 | 国产性生活视频 | 丰满人妻av一区二区三区 | 国产九九九九 | 鲁啊鲁在线视频 | 国产精品无码人妻一区二区在线 | 精品国产亚洲一区二区麻豆 | 亚洲一区h | www.99re.| 国产探花一区 | 91tv在线观看 | 精品国产一二三四区 | 污片在线免费观看 | 日韩不卡高清视频 | 亚洲精品电影在线观看 | 成人合集 | 欧美日韩亚洲一区二区 | 久久亚洲综合色图 | 蜜臀一区二区三区精品免费视频 | h视频在线观看网站 | 爱情岛论坛永久入址在线 | 亚洲毛片在线观看 | 欧美乱码视频 | 国产一级免费片 | 欧美性猛交xxxx偷拍洗澡 | 国精产品一品二品国精品69xx | 人妻换人妻a片爽麻豆 | 欧美性猛交aaaa片黑人 | 妺妺窝人体色www在线下载 | 在线观看av资源 | a久久久久 | 性感美女一区二区三区 | 人人草人人插 | 男女啪啪十八 | 日本在线小视频 | 国产三级成人 | 欧美肉大捧一进一出免费视频 | 日韩欧美aⅴ综合网站发布 国产成人一区二区三区小说 | 亚洲红桃视频 | 国产成人久久久 | 孕妇一级片| 涩涩视频在线 | 香蕉久久夜色精品 | 五月婷婷丁香 | 在线观看精品视频 | 免费的一级黄色片 | 国产激情视频在线 | 在线看一区 | 日韩福利电影在线观看 | fc2ppv在线观看 | 亚洲成人免费网站 | 国产做爰免费观看 |