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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

加密和解密算法的兩個實現

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 加密和解密算法的兩個實現 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????最近一段時間,集團加強了資安方面的管理,所有敏感的配置字節都必須經過加密處理,把最近用到的幾個加解密類整理了一下,以做備忘.

??? 其實這兩個類實現的方法差不多,只是有些細微區別:

對稱加密演算法類 SymmetricMethodHelper
using?System;
using?System.IO;
using?System.Security.Cryptography;
using?System.Text;

///?<summary>
///?對稱加密演算法類
///?</summary>
public?class?SymmetricMethodHelper
{
????
private?SymmetricAlgorithm?mobjCryptoService;
????
private?string?Key;
????
///?<summary>
????
///?對稱加密類的構造函數
????
///?</summary>
????public?SymmetricMethodHelper()
????{
????????mobjCryptoService?=?new?RijndaelManaged();
????????Key?=?"Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
????}

????
///?<summary>
????
///?對稱加密類的構造函數
????
///?</summary>
????public?SymmetricMethodHelper(string?key)
????{
????????mobjCryptoService?=?new?RijndaelManaged();
????????Key?=?key?+?"Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
????}

????
///?<summary>
????
///?獲得密鑰
????
///?</summary>
????
///?<returns>密鑰</returns>
????private?byte[]?GetLegalKey()
????{
????????
string?sTemp?=?Key;
????????mobjCryptoService.GenerateKey();
????????
byte[]?bytTemp?=?mobjCryptoService.Key;
????????
int?KeyLength?=?bytTemp.Length;
????????
if?(sTemp.Length?>?KeyLength)
????????????sTemp?
=?sTemp.Substring(0,?KeyLength);
????????
else?if?(sTemp.Length?<?KeyLength)
????????????sTemp?
=?sTemp.PadRight(KeyLength,?'?');
????????
return?ASCIIEncoding.ASCII.GetBytes(sTemp);
????}
????
///?<summary>
????
///?獲得初始向量IV
????
///?</summary>
????
///?<returns>初試向量IV</returns>
????private?byte[]?GetLegalIV()
????{
????????
string?sTemp?=?"E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
????????mobjCryptoService.GenerateIV();
????????
byte[]?bytTemp?=?mobjCryptoService.IV;
????????
int?IVLength?=?bytTemp.Length;
????????
if?(sTemp.Length?>?IVLength)
????????????sTemp?
=?sTemp.Substring(0,?IVLength);
????????
else?if?(sTemp.Length?<?IVLength)
????????????sTemp?
=?sTemp.PadRight(IVLength,?'?');
????????
return?ASCIIEncoding.ASCII.GetBytes(sTemp);
????}
????
///?<summary>
????
///?加密方法
????
///?</summary>
????
///?<param?name="Source">待加密的串</param>
????
///?<returns>經過加密的串</returns>
????public?string?Encrypto(string?Source)
????{
????????
byte[]?bytIn?=?UTF8Encoding.UTF8.GetBytes(Source);
????????MemoryStream?ms?
=?new?MemoryStream();
????????mobjCryptoService.Key?
=?GetLegalKey();
????????mobjCryptoService.IV?
=?GetLegalIV();
????????ICryptoTransform?encrypto?=?mobjCryptoService.CreateEncryptor();
????????CryptoStream?cs?=?new?CryptoStream(ms,?encrypto,?CryptoStreamMode.Write);
????????cs.Write(bytIn,?0,?bytIn.Length);
????????cs.FlushFinalBlock();
????????ms.Close();
????????
byte[]?bytOut?=?ms.ToArray();
????????
return?Convert.ToBase64String(bytOut);
????}
????
///?<summary>
????
///?解密方法
????
///?</summary>
????
///?<param?name="Source">待解密的串</param>
????
///?<returns>經過解密的串</returns>
????public?string?Decrypto(string?Source)
????{
????????
byte[]?bytIn?=?Convert.FromBase64String(Source);
????????MemoryStream?ms?
=?new?MemoryStream(bytIn,?0,?bytIn.Length);
????????mobjCryptoService.Key?
=?GetLegalKey();
????????mobjCryptoService.IV?
=?GetLegalIV();
????????ICryptoTransform?encrypto?
=?mobjCryptoService.CreateDecryptor();
????????CryptoStream?cs?
=?new?CryptoStream(ms,?encrypto,?CryptoStreamMode.Read);
????????StreamReader?sr?
=?new?StreamReader(cs);
????????
return?sr.ReadToEnd();
????}
}

?

?

Code
using?System;
using?System.Text;
using?System.IO;
using?System.Security.Cryptography;

public?class?EncryptUtil?{
????????
///?<summary>
????????
///?Des加密
????????
///?</summary>
????????
///?<param?name="clearText"></param>
????????
///?<returns></returns>
????????public?static?string?DesEncrypt(string?clearText)?{
????????????
byte[]?byKey?=?System.Text.ASCIIEncoding.UTF8.GetBytes(KEY_64);
????????????
byte[]?byIV?=?System.Text.ASCIIEncoding.UTF8.GetBytes(IV_64);

????????????DESCryptoServiceProvider?cryptoProvider?
=?new?DESCryptoServiceProvider();

????????????MemoryStream?memStream?
=?new?MemoryStream();
????????????
//以寫模式?把數據流和要加密的數據流建立連接
????????????CryptoStream?cryStream?=?new?CryptoStream(memStream,?cryptoProvider.CreateEncryptor(byKey,?byIV),?CryptoStreamMode.Write);

????????????
//將要加密的數據轉換為UTF8編碼的數組

????????????
byte[]?clearTextArray?=?Encoding.UTF8.GetBytes(clearText);

????????????
//加密?並寫到?內存流memStream中

????????????cryStream.Write(clearTextArray,?
0,?clearTextArray.Length);
????????????
//清空緩衝區
????????????cryStream.FlushFinalBlock();

????????????
//將8位無符號整數數組?轉換為?等效的System.String?的形式.
????????????return?Convert.ToBase64String(memStream.ToArray());
????????}

????????
///?<summary>
????????
///?Des解密
????????
///?</summary>
????????
///?<param?name="data"></param>
????????
///?<returns></returns>
????????public?static?string?DesDecrypt(string?encryptedText)?{
????????????
byte[]?byKey?=?System.Text.ASCIIEncoding.UTF8.GetBytes(KEY_64);
????????????
byte[]?byIV?=?System.Text.ASCIIEncoding.UTF8.GetBytes(IV_64);

????????????
//
????????????byte[]?byteArray?=?Convert.FromBase64String(encryptedText);

????????????MemoryStream?memStream?
=?new?MemoryStream();

????????????DESCryptoServiceProvider?cryptoProvider?
=?new?DESCryptoServiceProvider();
????????????CryptoStream?cryStream?
=?new?CryptoStream(memStream,?cryptoProvider.CreateDecryptor(byKey,?byIV),?CryptoStreamMode.Write);

????????????cryStream.Write(byteArray,?
0,?byteArray.Length);
????????????
//清空緩衝區
????????????cryStream.FlushFinalBlock();

????????????System.Text.Encoding?encoding?
=?new?System.Text.UTF8Encoding();
????????????
//把字節數組轉換為?等效的System.String?的形式.
????????????return?encoding.GetString(memStream.ToArray());
????????}


????????
///?<summary>
????????
///?Des加密,功能同DesEncrypt相同
????????
///?</summary>
????????
///?<param?name="clearText"></param>
????????
///?<returns></returns>
????????public?static?string?DesEncode(string?clearText)?{
????????????
byte[]?byKey?=?System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
????????????
byte[]?byIV?=?System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

????????????DESCryptoServiceProvider?cryptoProvider?
=?new?DESCryptoServiceProvider();

????????????MemoryStream?memStream?
=?new?MemoryStream();
????????????CryptoStream?cryStream?
=?new?CryptoStream(memStream,?cryptoProvider.CreateEncryptor(byKey,?byIV),?CryptoStreamMode.Write);

????????????StreamWriter?sw?
=?new?StreamWriter(cryStream);
????????????sw.Write(clearText);
????????????sw.Flush();
????????????cryStream.FlushFinalBlock();
????????????sw.Flush();
????????????
return?Convert.ToBase64String(memStream.GetBuffer(),?0,?(int)memStream.Length);

????????}

????????
///?<summary>
????????
///?Des解密,功能同DesDecrypt相同
????????
///?</summary>
????????
///?<param?name="encryptedText"></param>
????????
///?<returns></returns>
????????public?static?string?DesDecode(string?encryptedText)?{
????????????
byte[]?byKey?=?System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
????????????
byte[]?byIV?=?System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

????????????
byte[]?byteArray;
????????????
try?{
????????????????byteArray?
=?Convert.FromBase64String(encryptedText);
????????????}
????????????
catch?{
????????????????
return?null;
????????????}

????????????DESCryptoServiceProvider?cryptoProvider?
=?new?DESCryptoServiceProvider();
????????????MemoryStream?memStream?
=?new?MemoryStream(byteArray);
????????????CryptoStream?cryStream?
=?new?CryptoStream(memStream,?cryptoProvider.CreateDecryptor(byKey,?byIV),?CryptoStreamMode.Read);
????????????StreamReader?sr?
=?new?StreamReader(cryStream);
????????????
????????????
return?sr.ReadToEnd();
????????}

????????
private?const?string?KEY_64?=?"MyPubKey";??//公鈅
????????private?const?string?IV_64?=?"MyPriKey";???//私鈅,注意了:是8個字符,64位


????}
???? 注意這兩段代碼標注為紅色部分的差異,其中SymmetricMethodHelper類支持超過8位的私鑰,而EncryptUtil類不支持超過8位的私鑰.?

轉載于:https://www.cnblogs.com/Jebel/archive/2008/08/13/1267002.html

總結

以上是生活随笔為你收集整理的加密和解密算法的兩個實現的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 性色视频网站 | 一起射导航 | 99re99| 成人高清免费 | 凹凸av在线 | 国产日韩欧美在线观看视频 | 色婷婷久久久亚洲一区二区三区 | 久久午夜国产 | 国产一区二区三区影院 | www.亚洲天堂.com | 青青草原在线免费观看视频 | 生活片一级片 | 午夜剧场福利 | 黄色大视频 | 色午夜| 男女aa视频| 国产高清一区二区 | 国产日韩精品中文字无码 | 四虎影视免费 | 中文字幕大全 | 变态另类ts人妖一区二区 | 在线免费观看日韩视频 | 日韩一本在线 | 中文字幕激情 | 秘密的基地 | 日韩人妻精品一区二区三区 | 国产伦精品一区二区三区妓女 | 亚洲无吗在线 | xxav在线 | 日韩精品第二页 | 中文字幕福利视频 | 视频区小说区图片区 | 天天插日日干 | 精品欧美乱码久久久久久1区2区 | 久久一级大片 | 欧美sm凌虐视频网站 | 欧美二三区 | 免费黄色网址视频 | 羞羞羞网站 | 欧美精品xxx | 天天色宗合| 吖v在线 | 日本在线一区二区 | 色播开心网| 涩涩成人网 | 欧美精品一区二区久久婷婷 | 日本黄视频在线观看 | 夜夜嗨av一区二区 | 黄色大全免费看 | 日本久久一级片 | 午夜精品久久 | 国产麻豆一区二区三区在线观看 | 亚洲黄a | 糖心视频在线 | 九九视频免费在线观看 | 久青草免费视频 | 国产精品宾馆在线精品酒店 | 日本美女一级视频 | 久久激情综合网 | 日韩精品一区不卡 | 日韩色在线观看 | cao在线| 日韩经典在线 | 人妻少妇精品无码专区 | 欧洲av在线播放 | xxxxhdvideos | 四季av国产一区二区三区 | 成人在线免费观看视频 | 嫩草视频91| 在线观看污网站 | 希岛婚前侵犯中文字幕在线 | 亚洲欧美一区二区三区在线 | 五月激情在线观看 | 大陆av在线播放 | 日韩在线第二页 | 亚洲一级成人 | 无码日韩精品一区二区 | 亚洲无码国产精品 | 99久久久无码国产精品衣服 | 国产区亚洲区 | 国产真人做爰毛片视频直播 | 国产视频九色蝌蚪 | 午夜久草 | 日韩啊v| 中文字幕有码无码人妻av蜜桃 | 国内91视频 | 日韩成人在线观看 | 欧美日韩中文视频 | 奇米色在线 | 怎么可能高潮了就结束漫画 | jizz俄罗斯| 性高潮免费视频 | av中文一区 | 国产二区视频 | 国产一级二级在线 | 亚州av网 | 五月天色小说 | 欧美成人三级在线观看 | 日本无遮羞调教打屁股网站 |