Csharp/C#教程:C#使用DES和AES实现加密解密功能示例分享

本文实例讲述了C#使用DES和AES实现加密解密功能。分享给大家供大家参考,具体如下:

usingSystem; usingSystem.Text; usingSystem.Security.Cryptography; usingSystem.IO; namespaceMyCryptography { ///<summary> ///DES加密解密 ///</summary> publicclassDES { ///<summary> ///获取密钥 ///</summary> privatestaticstringKey { get{return@"P@+#wG+Z";} } ///<summary> ///获取向量 ///</summary> privatestaticstringIV { get{return@"L%n67}GMk@k%:~Y";} } ///<summary> ///DES加密 ///</summary> ///<paramname="plainStr">明文字符串</param> ///<returns>密文</returns> publicstaticstringDESEncrypt(stringplainStr) { byte[]bKey=Encoding.UTF8.GetBytes(Key); byte[]bIV=Encoding.UTF8.GetBytes(IV); byte[]byteArray=Encoding.UTF8.GetBytes(plainStr); stringencrypt=null; DESCryptoServiceProviderdes=newDESCryptoServiceProvider(); try { using(MemoryStreammStream=newMemoryStream()) { using(CryptoStreamcStream=newCryptoStream(mStream,des.CreateEncryptor(bKey,bIV),CryptoStreamMode.Write)) { cStream.Write(byteArray,0,byteArray.Length); cStream.FlushFinalBlock(); encrypt=Convert.ToBase64String(mStream.ToArray()); } } } catch{} des.Clear(); returnencrypt; } ///<summary> ///DES解密 ///</summary> ///<paramname="encryptStr">密文字符串</param> ///<returns>明文</returns> publicstaticstringDESDecrypt(stringencryptStr) { byte[]bKey=Encoding.UTF8.GetBytes(Key); byte[]bIV=Encoding.UTF8.GetBytes(IV); byte[]byteArray=Convert.FromBase64String(encryptStr); stringdecrypt=null; DESCryptoServiceProviderdes=newDESCryptoServiceProvider(); try { using(MemoryStreammStream=newMemoryStream()) { using(CryptoStreamcStream=newCryptoStream(mStream,des.CreateDecryptor(bKey,bIV),CryptoStreamMode.Write)) { cStream.Write(byteArray,0,byteArray.Length); cStream.FlushFinalBlock(); decrypt=Encoding.UTF8.GetString(mStream.ToArray()); } } } catch{} des.Clear(); returndecrypt; } } ///<summary> ///AES加密解密 ///</summary> publicclassAES { ///<summary> ///获取密钥 ///</summary> privatestaticstringKey { get{return@")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M";} } ///<summary> ///获取向量 ///</summary> privatestaticstringIV { get{return@"L+~f4,Ir)b$=pkf";} } ///<summary> ///AES加密 ///</summary> ///<paramname="plainStr">明文字符串</param> ///<returns>密文</returns> publicstaticstringAESEncrypt(stringplainStr) { byte[]bKey=Encoding.UTF8.GetBytes(Key); byte[]bIV=Encoding.UTF8.GetBytes(IV); byte[]byteArray=Encoding.UTF8.GetBytes(plainStr); stringencrypt=null; Rijndaelaes=Rijndael.Create(); try { using(MemoryStreammStream=newMemoryStream()) { using(CryptoStreamcStream=newCryptoStream(mStream,aes.CreateEncryptor(bKey,bIV),CryptoStreamMode.Write)) { cStream.Write(byteArray,0,byteArray.Length); cStream.FlushFinalBlock(); encrypt=Convert.ToBase64String(mStream.ToArray()); } } } catch{} aes.Clear(); returnencrypt; } ///<summary> ///AES加密 ///</summary> ///<paramname="plainStr">明文字符串</param> ///<paramname="returnNull">加密失败时是否返回null,false返回String.Empty</param> ///<returns>密文</returns> publicstaticstringAESEncrypt(stringplainStr,boolreturnNull) { stringencrypt=AESEncrypt(plainStr); returnreturnNull?encrypt:(encrypt==null?String.Empty:encrypt); } ///<summary> ///AES解密 ///</summary> ///<paramname="encryptStr">密文字符串</param> ///<returns>明文</returns> publicstaticstringAESDecrypt(stringencryptStr) { byte[]bKey=Encoding.UTF8.GetBytes(Key); byte[]bIV=Encoding.UTF8.GetBytes(IV); byte[]byteArray=Convert.FromBase64String(encryptStr); stringdecrypt=null; Rijndaelaes=Rijndael.Create(); try { using(MemoryStreammStream=newMemoryStream()) { using(CryptoStreamcStream=newCryptoStream(mStream,aes.CreateDecryptor(bKey,bIV),CryptoStreamMode.Write)) { cStream.Write(byteArray,0,byteArray.Length); cStream.FlushFinalBlock(); decrypt=Encoding.UTF8.GetString(mStream.ToArray()); } } } catch{} aes.Clear(); returndecrypt; } ///<summary> ///AES解密 ///</summary> ///<paramname="encryptStr">密文字符串</param> ///<paramname="returnNull">解密失败时是否返回null,false返回String.Empty</param> ///<returns>明文</returns> publicstaticstringAESDecrypt(stringencryptStr,boolreturnNull) { stringdecrypt=AESDecrypt(encryptStr); returnreturnNull?decrypt:(decrypt==null?String.Empty:decrypt); } } }

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

文字在线加密解密工具(包含AES、DES、RC4等):
https://tools.jb51.net/password/txt_encode

MD5在线加密工具:
https://tools.jb51.net/password/CreateMD5Password

在线散列/哈希算法加密工具:
https://tools.jb51.net/password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
https://tools.jb51.net/password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
https://tools.jb51.net/password/sha_encode

更多关于C#相关内容还可查看本站专题:《C#加密与解密算法与技巧上述就是C#学习教程:C#使用DES和AES实现加密解密功能示例分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/907880.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐