翻譯|其它|編輯:郝浩|2008-01-22 10:16:07.000|閱讀 1225 次
概述:
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
一般我們加密碼要用MD5,DES等等一些算法,在.NET中集成了大量的加秘類
不過對于簡單的加密處理是否有必要那么復雜?
對于要加密保護不強的東西,完全定義一種自己的設計也不錯,就是用一個密鑰+隨即碼轉化成特殊字符
但隨機碼和鑰怎樣組合就是重要的了:
下面是個簡單例子:
public class EncryptString
...{
public static string key = "FireBird";//密鑰
/**//// <summary>
/// 將明文加密碼
/// </summary>
/// <param name="uid">用戶名</param>
/// <param name="key">加密明文</param>
/// <returns>6位隨機數+key+UID+5位隨機數字</returns>
public static string Encrypt(string uid) / /這里用了靜態方法
...{
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是鑰匙
下面進行加密碼
public bool EncryptConvert(string uid)
...{
string encryptText = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(EncryptString.Encrypt(uid))).Replace("+", "%2B");//加密(調用靜態明文生成方法)
if (Decrypt(encryptText, uid))//調用解密方法
...{
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;
}
}
以上代碼實現了整個加密,解密過程,在加密方法中EncryptConvert()同時調用了下面的解密方法,讀這可將他們分離
實現獨立的兩個方法,并且在真正用到時建議把密鑰用字節數組的方式分散到隨機數中,比如:
隨機器數+1位密鑰匙+隨即數+1位密鑰+隨機數......這樣在變換時一般是察覺不到變化的,除非有人刻意去攻擊你
你還可以把密鑰中的某個定意成一定規律遞增或減少
這樣就實現的簡單的加密碼,我主要是用于一次性地址轉向:)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:個人博客