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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

提供一个基于.NET的加密/解密算法

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 提供一个基于.NET的加密/解密算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
提供一個基于.NET?SymmetricAlgorithm?類的、帶私鑰的加密/解密算法的包裝類。使用方法:

symmcrypto?de?=?new?SymmCrypto(SymmCrypto.SymmProvEnum.DES);
Response.Write(x.Decrypting(de.Encrypting("ok","yyy"),"yyy"));

類的實現c#編碼

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

namespace?eMeng
{
??///?<summary>
??///?SymmCrypto?的摘要說明。
??///?SymmCrypto類實現.NET框架下的加密和解密服務。
??///?原作者:?Frank?Fang?:?fangfrank@hotmail.com
??///?</summary>
??public?class?SymmCrypto
??{
??????public?enum?SymmProvEnum?:?int
??????{
????????DES,?RC2,?Rijndael
??????}

????private?SymmetricAlgorithm?mobjCryptoService;

????///?<remarks>
????///?使用.Net?SymmetricAlgorithm?類的構造器.
????///?</remarks>
????public?SymmCrypto(SymmProvEnum?NetSelected)
????{
??????switch?(NetSelected)
??????{
????????case?SymmProvEnum.DES:
??????????mobjCryptoService?=?new?DESCryptoServiceProvider();
??????????break;
????????case?SymmProvEnum.RC2:
??????????mobjCryptoService?=?new?RC2CryptoServiceProvider();
??????????break;
????????case?SymmProvEnum.Rijndael:
??????????mobjCryptoService?=?new?RijndaelManaged();
??????????break;
??????}
????}

????///?<remarks>
????///?使用自定義SymmetricAlgorithm類的構造器.
????///?</remarks>
????public?SymmCrypto(SymmetricAlgorithm?ServiceProvider)
????{
??????mobjCryptoService?=?ServiceProvider;
????}

????///?<remarks>
????///?Depending?on?the?legal?key?size?limitations?of?
????///?a?specific?CryptoService?provider?and?length?of?
????///?the?private?key?provided,?padding?the?secret?key?
????///?with?space?character?to?meet?the?legal?size?of?the?algorithm.
????///?</remarks>
????private?byte[]?GetLegalKey(string?Key)
????{
??????string?sTemp;
??????if?(mobjCryptoService.LegalKeySizes.Length?>?0)
??????{
????????int?lessSize?=?0,?moreSize?=?mobjCryptoService.LegalKeySizes[0].MinSize;
????????//?key?sizes?are?in?bits
????????while?(Key.Length?*?8?>?moreSize)
????????{
??????????lessSize?=?moreSize;
??????????moreSize?+=?mobjCryptoService.LegalKeySizes[0].SkipSize;
????????}
????????sTemp?=?Key.PadRight(moreSize?/?8,?'?');
??????}
??????else
????????sTemp?=?Key;

??????//?convert?the?secret?key?to?byte?array
??????return?ASCIIEncoding.ASCII.GetBytes(sTemp);
????}

????public?string?Encrypting(string?Source,?string?Key)
????{
??????byte[]?bytIn?=?System.Text.ASCIIEncoding.ASCII.GetBytes(Source);
??????//?create?a?MemoryStream?so?that?the?process?can?be?done?without?I/O?files
??????System.IO.MemoryStream?ms?=?new?System.IO.MemoryStream();

??????byte[]?bytKey?=?GetLegalKey(Key);

??????//?set?the?private?key
??????mobjCryptoService.Key?=?bytKey;
??????mobjCryptoService.IV?=?bytKey;

??????//?create?an?Encryptor?from?the?Provider?Service?instance
??????ICryptoTransform?encrypto?=?mobjCryptoService.CreateEncryptor();

??????//?create?Crypto?Stream?that?transforms?a?stream?using?the?encryption
??????CryptoStream?cs?=?new?CryptoStream(ms,?encrypto,?CryptoStreamMode.Write);

??????//?write?out?encrypted?content?into?MemoryStream
??????cs.Write(bytIn,?0,?bytIn.Length);
??????cs.FlushFinalBlock();
????????????
??????//?get?the?output?and?trim?the?'/0'?bytes
??????byte[]?bytOut?=?ms.GetBuffer();
??????int?i?=?0;
??????for?(i?=?0;?i?<?bytOut.Length;?i++)
????????if?(bytOut[i]?==?0)
??????????break;
????????????????????
??????//?convert?into?Base64?so?that?the?result?can?be?used?in?xml
??????return?System.Convert.ToBase64String(bytOut,?0,?i);
????}

????public?string?Decrypting(string?Source,?string?Key)
????{
??????//?convert?from?Base64?to?binary
??????byte[]?bytIn?=?System.Convert.FromBase64String(Source);
??????//?create?a?MemoryStream?with?the?input
??????System.IO.MemoryStream?ms?=?new?System.IO.MemoryStream(bytIn,?0,?bytIn.Length);

??????byte[]?bytKey?=?GetLegalKey(Key);

??????//?set?the?private?key
??????mobjCryptoService.Key?=?bytKey;
??????mobjCryptoService.IV?=?bytKey;

??????//?create?a?Decryptor?from?the?Provider?Service?instance
??????ICryptoTransform?encrypto?=?mobjCryptoService.CreateDecryptor();
?
??????//?create?Crypto?Stream?that?transforms?a?stream?using?the?decryption
??????CryptoStream?cs?=?new?CryptoStream(ms,?encrypto,?CryptoStreamMode.Read);

??????//?read?out?the?result?from?the?Crypto?Stream
??????System.IO.StreamReader?sr?=?new?System.IO.StreamReader(?cs?);
??????return?sr.ReadToEnd();
????}
??}
}

?

總結

以上是生活随笔為你收集整理的提供一个基于.NET的加密/解密算法的全部內容,希望文章能夠幫你解決所遇到的問題。

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