首页 系统维护 软件下载 站内搜索 软件搜索 人才通道
当前位置->首页->MBA风标->职业/工作资源

.Net下实现简单的加密设计

来源:chinaaspx    2008年01月21日14时23分31秒    
一般我们加密码要用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); 
  } 
【双击滚屏】       【打印】       【关闭】       【 字体:
MBA矿大QQ群:18153095、40998606
CopyRight 2006  制作:海慧超蓝 在线技术支持