简单的加密设计
来源:互联网 发布:浙江大学网络教育证书 编辑:程序博客网 时间:2024/05/01 15:22
一般我们加密码要用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;
}
}
...{
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;
}
}
...{
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;
}
}
...{
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位密钥+随机数......这样在变换时一般是察觉不到变化的,除非有人刻意去攻击你
你还可以把密钥中的某个定意成一定规律递增或减少
这样就实现的简单的加密码,我主要是用于一次性地址转向:)
- 简单的加密设计
- 程序设计的加密设计
- 简单的页面加密
- 简单的单机加密
- 简单的加密解密
- 简单的编码加密
- 简单的加密解密
- 简单的加密解密
- 简单的文件加密
- 最简单的加密
- 简单的水印加密
- 简单的aes加密
- 文件的简单加密
- 简单的文本加密
- 加密的简单介绍
- 简单加密的实现
- 简单的MD5加密
- 简单的文件加密
- GetProp和SetProp的用法
- 重写Essential Silverlight这本书中的第一个例子HelloWorld
- 征途,系统,写真
- JAVA中的Double运算(转载)
- Essential Silverlight翻译连载---第四章 XAML基础
- 简单的加密设计
- 如何删除 SQL Server 表中的重复行
- 技术人员行走职场三大陷阱之“熟人借钱”
- JavaScript"对象","属性"集锦
- 小知识:.Net中?和??的含义
- 7天连锁CEO郑南雁:以IT头脑经营酒店
- Essential Silverlight翻译连载---第四章 续3
- 详解ArcGIS Server安装与配置
- 敲门贴