C#字符串使用密鑰進(jìn)行加解密
第一個(gè)為大家分享的是C#字符串使用密鑰進(jìn)行加解密代碼,具體內(nèi)容如下
public class DesEncrypt { /// <summary> /// 算法偏移量 /// </summary> const string m_IV = "12345678"; /// <summary> /// 功能描述:根據(jù)輸入的密鑰生成8位密鑰 /// 作 者: 愛(ài)給模板網(wǎng) 2gei.cn /// 創(chuàng)建日期:2015-07-20 17:25:26 /// </summary> /// <param name="strkey">strkey</param> /// <returns>8位密鑰</returns> private static string GetKey(string strkey) { if (string.IsNullOrEmpty(strkey)) { strkey = "InfoColl"; } if (strkey.Length % 8 == 0) { return strkey; } else { return GetKey(strkey + "0"); } } /// <summary> /// 功能描述:加密字符串 /// 作 者: 愛(ài)給模板網(wǎng) 2gei.cn /// 創(chuàng)建日期:2015-07-20 17:18:31 /// 任務(wù)編號(hào): /// </summary> /// <param name="strSourceString">原字符串</param> /// <param name="strKey">密鑰</param> /// <returns>加密后的字符串</returns> public static string Encrypt(string strSourceString, string strKey) { strKey = GetKey(strKey); byte[] btKey = Encoding.UTF8.GetBytes(strKey); byte[] btIV = Encoding.UTF8.GetBytes(m_IV); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); using (MemoryStream ms = new MemoryStream()) { try { byte[] inData = Encoding.UTF8.GetBytes(strSourceString); using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write)) { cs.Write(inData, 0, inData.Length); cs.FlushFinalBlock(); } return Convert.ToBase64String(ms.ToArray()); } catch { return strSourceString; } } } /// <summary> /// 功能描述:解密字符串 /// 作 者: 愛(ài)給模板網(wǎng) 2gei.cn /// 創(chuàng)建日期:2015-07-20 17:18:49 /// 任務(wù)編號(hào): /// </summary> /// <param name="strEncryptedString">原字符串</param> /// <param name="strKey">密鑰</param> /// <returns>解密后的字符串</returns> public static string Decrypt(string strEncryptedString, string strKey) { strKey = GetKey(strKey); byte[] btKey = Encoding.UTF8.GetBytes(strKey); byte[] btIV = Encoding.UTF8.GetBytes(m_IV); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); using (MemoryStream ms = new MemoryStream()) { try { byte[] inData = Convert.FromBase64String(strEncryptedString); using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Write)) { cs.Write(inData, 0, inData.Length); cs.FlushFinalBlock(); } return Encoding.UTF8.GetString(ms.ToArray()); } catch { return strEncryptedString; } } } }
C#字符串加密和解密
using System.Security.Cryptography; using System.IO; //默認(rèn)密鑰向量 private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; /// <summary> /// DES加密字符串 /// </summary> /// <param name="encryptString">待加密的字符串</param> /// <param name="encryptKey">加密密鑰,要求為8位</param> /// <returns>加密成功返回加密后的字符串,失敗返回源串 </returns> public static string EncryptDES(string encryptString, string encryptKey) { try { byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));//轉(zhuǎn)換為字節(jié) byte[] rgbIV = Keys; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();//實(shí)例化數(shù)據(jù)加密標(biāo)準(zhǔn) MemoryStream mStream = new MemoryStream();//實(shí)例化內(nèi)存流 //將數(shù)據(jù)流鏈接到加密轉(zhuǎn)換的流 CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } catch { return encryptString; } } /// <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); byte[] rgbIV = Keys; 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 { return decryptString; } } string EncryptStr = EncryptDESString.EncryptDES("aaaaaaaaaa", "ssssssss"); //返回加密后的字符串 string DecryptStr = EncryptDESString.DecryptDES(EncryptStr, "ssssssss");//解密字符串
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- VS中C#讀取app.config數(shù)據(jù)庫(kù)配置字符串的三種方法
- C# 連接SQL數(shù)據(jù)庫(kù)的方法及常用連接字符串
- C#連接Excel2003和Excel2007以上版本做數(shù)據(jù)庫(kù)的連接字符串
- 深入分析C#連接Oracle數(shù)據(jù)庫(kù)的連接字符串詳解
- c# 連接字符串?dāng)?shù)據(jù)庫(kù)服務(wù)器端口號(hào) .net狀態(tài)服務(wù)器端口號(hào)
- c#多種加解密示例(md5加密解密)
- Javascript C#真正可以交互的DES加解密代碼
- C# 數(shù)據(jù)庫(kù)鏈接字符串加密解密工具代碼詳解
相關(guān)文章
C#與PHP的md5計(jì)算結(jié)果不同的解決方法
今天在用C#接入我的登錄api發(fā)現(xiàn)了一個(gè)問(wèn)題,登陸的時(shí)候無(wú)論如何都會(huì)出現(xiàn)用戶(hù)名和密碼錯(cuò)誤的問(wèn)題,后來(lái)通過(guò)查找排除找的了問(wèn)題的原因是因?yàn)镃#與PHP的md5計(jì)算結(jié)果不同導(dǎo)致的,下面就來(lái)看看如何解決這個(gè)問(wèn)題吧。2016-12-12C#實(shí)現(xiàn)獲取多維數(shù)組的行數(shù)與列數(shù)
這篇文章主要為大家詳細(xì)介紹了C#如何分別使用Array.GetUpperBound方法和Array.GetLength方法實(shí)現(xiàn)獲取多維數(shù)組的行數(shù)與列數(shù),需要的可以參考下2024-02-02C#實(shí)現(xiàn)的上傳圖片、保存圖片、加水印、生成縮略圖功能示例
這篇文章主要介紹了C#實(shí)現(xiàn)的上傳圖片、保存圖片、加水印、生成縮略圖功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了C#圖片上傳、保存、水印、縮略圖等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02使用Spire.Barcode程序庫(kù)生成二維碼的實(shí)例解析
這篇文章主要介紹了使用Spire.Barcode程序庫(kù)生成二維碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12DevExpress實(shí)現(xiàn)TreeList節(jié)點(diǎn)互斥的方法
這篇文章主要介紹了DevExpress實(shí)現(xiàn)TreeList節(jié)點(diǎn)互斥的方法,對(duì)于初學(xué)者更好的理解C#有一定的幫助,需要的朋友可以參考下2014-08-08