C#實(shí)現(xiàn)簡(jiǎn)易的加密、解密字符串工具類實(shí)例
本文實(shí)例講述了C#實(shí)現(xiàn)簡(jiǎn)易的加密、解密字符串工具類。分享給大家供大家參考。具體如下:
這里的類CypherHelper是一個(gè)用于加密、解密字符串的工具類~~~,適合于方便地加密、解密長(zhǎng)度較短的密碼等字符串(C#里面已經(jīng)有了庫(kù)System.Security.Cryptography,對(duì)于比較長(zhǎng)的字符串或流來(lái)說(shuō)是一個(gè)更好的選擇)
類CypherHelper代碼:
class CypherHelper { /// <summary> /// 加密字符串 /// </summary> /// <param name="word">被加密字符串</param> /// <param name="key">密鑰</param> /// <returns>加密后字符串</returns> public static string Encrypt(string word, string key) { if (!System.Text.RegularExpressions.Regex.IsMatch(key, "^[a-zA-Z]*$")) { throw new Exception("key 必須由字母組成"); } key = key.ToLower(); //逐個(gè)字符加密字符串 char[] s = word.ToCharArray(); for (int i = 0; i < s.Length; i++) { char a = word[i]; char b = key[i % key.Length]; s[i] = EncryptChar(a, b); } return new string(s); } /// <summary> /// 加密單個(gè)字符 /// </summary> /// <param name="a">被加密字符</param> /// <param name="b">密鑰</param> /// <returns>加密后字符</returns> private static char EncryptChar(char a, char b) { int c = a + b - 'a'; if (a >= '0' && a <= '9') //字符0-9的轉(zhuǎn)換 { while (c > '9') c -= 10; } else if (a >= 'a' && a <= 'z') //字符a-z的轉(zhuǎn)換 { while (c > 'z') c -= 26; } else if (a >= 'A' && a <= 'Z') //字符A-Z的轉(zhuǎn)換 { while (c > 'Z') c -= 26; } else return a; //不再上面的范圍內(nèi),不轉(zhuǎn)換直接返回 return (char)c; //返回轉(zhuǎn)換后的字符 } /// <summary> /// 解密字符串 /// </summary> /// <param name="word">被解密字符串</param> /// <param name="key">密鑰</param> /// <returns>解密后字符串</returns> public static string Decrypt(string word, string key) { if (!System.Text.RegularExpressions.Regex.IsMatch(key, "^[a-zA-Z]*$")) { throw new Exception("key 必須由字母組成"); } key = key.ToLower(); //逐個(gè)字符解密字符串 char[] s = word.ToCharArray(); for (int i = 0; i < s.Length; i++) { char a = word[i]; char b = key[i % key.Length]; s[i] = DecryptChar(a, b); } return new string(s); } /// <summary> /// 解密單個(gè)字符 /// </summary> /// <param name="a">被解密字符</param> /// <param name="b">密鑰</param> /// <returns>解密后字符</returns> private static char DecryptChar(char a, char b) { int c = a - b + 'a'; if (a >= '0' && a <= '9') //字符0-9的轉(zhuǎn)換 { while (c < '0') c += 10; } else if (a >= 'a' && a <= 'z') //字符a-z的轉(zhuǎn)換 { while (c < 'a') c += 26; } else if (a >= 'A' && a <= 'Z') //字符A-Z的轉(zhuǎn)換 { while (c < 'A') c += 26; } else return a; //不再上面的范圍內(nèi),不轉(zhuǎn)換直接返回 return (char)c; //返回轉(zhuǎn)換后的字符 } }
Main函數(shù)調(diào)用示例
class Program { static void Main(string[] args) { //1.加密 string a = CypherHelper.Encrypt("TsybiusLee1234", "Galatea"); Console.WriteLine("加密:TsybiusLee1234 → " + a); //2.解密 string b = CypherHelper.Decrypt(a, "Galatea"); Console.WriteLine("解密:" + a + " → " + b); Console.ReadLine(); } }
運(yùn)行結(jié)果
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
將c#編寫的程序打包成應(yīng)用程序的實(shí)現(xiàn)步驟分享(安裝,卸載) 圖文
時(shí)常會(huì)寫用c#一些程序,但如何將他們和photoshop一樣的大型軟件打成一個(gè)壓縮包,以便于發(fā)布.2011-12-12c#后臺(tái)線程訪問(wèn)前臺(tái)控件并顯示信息示例
這篇文章主要介紹了c#后臺(tái)線程訪問(wèn)前臺(tái)控件并顯示信息示例,需要的朋友可以參考下2014-03-03解決安裝VS2008無(wú)法更改默認(rèn)路徑的問(wèn)題
這篇文章主要介紹了安裝VS2008無(wú)法更改默認(rèn)路徑的解決方法,需要的朋友可以參考下。2016-06-06c#中利用委托反射將DataTable轉(zhuǎn)換為實(shí)體集的代碼
c#中利用委托反射將DataTable轉(zhuǎn)換為實(shí)體集的代碼,需要的朋友可以參考下2012-10-10