翻譯|其它|編輯:郝浩|2008-01-22 10:16:07.000|閱讀 1225 次
概述:
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
一般我們加密碼要用MD5,DES等等一些算法,在.NET中集成了大量的加秘類
不過對于簡單的加密處理是否有必要那么復(fù)雜?
對于要加密保護(hù)不強(qiáng)的東西,完全定義一種自己的設(shè)計(jì)也不錯(cuò),就是用一個(gè)密鑰+隨即碼轉(zhuǎn)化成特殊字符
但隨機(jī)碼和鑰怎樣組合就是重要的了:
下面是個(gè)簡單例子:
public class EncryptString
...{
public static string key = "FireBird";//密鑰
/**//// <summary>
/// 將明文加密碼
/// </summary>
/// <param name="uid">用戶名</param>
/// <param name="key">加密明文</param>
/// <returns>6位隨機(jī)數(shù)+key+UID+5位隨機(jī)數(shù)字</returns>
public static string Encrypt(string uid) / /這里用了靜態(tài)方法
...{
int number;
char code;
string checkCode = String.Empty;
Random random = new Random();
for (int i = 0; i < 6; i++)
...{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString();
}
string encryptText = checkCode + "|" + key + "|" + uid + "|" + random.Next(100000);
return encryptText;
}
}
上面的代碼生成要加密的明文,其主要是給UID加密,KEY是鑰匙
下面進(jìn)行加密碼
public bool EncryptConvert(string uid)
...{
string encryptText = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(EncryptString.Encrypt(uid))).Replace("+", "%2B");//加密(調(diào)用靜態(tài)明文生成方法)
if (Decrypt(encryptText, uid))//調(diào)用解密方法
...{
Session.Add(SystemConst.KEY_CACHE_STUDENT, uid);
return true;
}
else
...{
return false;
}
}
下面定義解密:
public bool Decrypt(string encryptText,string uid)
...{
string decryptText = System.Text.Encoding.Default.GetString(Convert.FromBase64String(encryptText.ToString().Replace("%2B", "+")));
string[] decrypt = decryptText.Split('|');
if (decrypt[1].ToString().Trim() == EncryptString.key.ToString().Trim())
...{
return true;
}
else
...{
return false;
}
}
以上代碼實(shí)現(xiàn)了整個(gè)加密,解密過程,在加密方法中EncryptConvert()同時(shí)調(diào)用了下面的解密方法,讀這可將他們分離
實(shí)現(xiàn)獨(dú)立的兩個(gè)方法,并且在真正用到時(shí)建議把密鑰用字節(jié)數(shù)組的方式分散到隨機(jī)數(shù)中,比如:
隨機(jī)器數(shù)+1位密鑰匙+隨即數(shù)+1位密鑰+隨機(jī)數(shù)......這樣在變換時(shí)一般是察覺不到變化的,除非有人刻意去攻擊你
你還可以把密鑰中的某個(gè)定意成一定規(guī)律遞增或減少
這樣就實(shí)現(xiàn)的簡單的加密碼,我主要是用于一次性地址轉(zhuǎn)向:)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:個(gè)人博客