一般我们加密码要用MD5,DES等等一些算法,在.NET中集成了大量的加秘类
不过对于简单的加密处理是否有必要那么复杂?
对于要加密保护不强的东西,完全定义一种自己的设计也不错,就是用一个密钥+随即码转化成特殊字符
但随机码和钥怎样组合就是重要的了:
下面是个简单例子:
public class EncryptString ...{ public static string key = "FireBird"; //密钥
/**//// /// 将明文加密码 /// /// 用户名 /// 加密明文 /// 6位随机数+key+UID+5位随机数字 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位密钥+随机数......这样在变换时一般是察觉不到变化的,除非有人刻意去攻击你
你还可以把密钥中的某个定意成一定规律递增或减少
这样就实现的简单的加密码,我主要是用于一次性地址转向:)
ASP.NET程序实现三色交替的下拉列表框 实现方法: 1.使用System.Web.UI.HtmlControls控件,把它作为服务器控件运行。 2.在后台为这个select控件绑定数据。 3.再调用一个自己写的函数为它的没个项目指定颜色。 实现代码(主要实现部分): 前台(WebForm1.aspx): <SELECT id="Select1" style="WIDTH: 300px" name="Select1" runat="server"> <OPTION selected></OPTION> </SELECT> 后台(WebForm1.aspx.cs): private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) { SqlConnection cnn = new SqlConnection(); cnn.ConnectionString = "data source=localhost;initial catalog=Northwind;password=;" +"persist security info=True;user id=sa;workstation id=APJ062;packet size=4096"; string sqlstr = "select Top 10 CustomerID, CompanyName from Customers"; cnn.Open(); SqlDataAdapter ad = new SqlDataAdapter(sqlstr,cnn); DataTable dt = new DataTable(); ad.Fill(dt); Select1.DataSource = dt; Select1.DataTextField = "CompanyName"; Select1.DataValueField = "CustomerID"; Select1.DataBind(); BindSelectColor(Select1); } } //为select控件的项目添加样式 void BindSelectColor(HtmlSelect select) { int num = 0; string styleString = ""; for(int i = 0 ; i < select.Items.Count; i ++ ) { num = i % 3; switch(num) { case 0: { styleString = "COLOR: #000099; BACKGROUND-COLOR: #F4FAFF"; break; } case 1: { styleString = "COLOR: #990000; BACKGROUND-COLOR: #FFFAFB"; break; } case 2: { styleString = "COLOR: #009900; BACKGROUND-COLOR: #F4FFFA"; break; } } select.Items[i].Attributes.Add("style",styleString); }
|