加密机制

来源:互联网 发布:数据采集卡企业 编辑:程序博客网 时间:2024/05/19 20:46

Cookie MD5或者SHA1加密

   Response.Cookies["OAMUserName"].Value = FormsAuthentication.HashPasswordForStoringInConfigFile(LOGON_USER, "md5");

   在数据库中添加一个字段,使用insert将加密的口令作为一个string存入数据库,当用户登录的时候,就可以将用户输入的口令加密结果和数据库中的正确结果比较,通过这种方法来验证口令的正确性.

 

  MD532位的不可逆加密算法,2128次幂,任何字符串加密后都是长度相同的32位字符串,所有会有不同的字符串加密后数据相同的情况.

 

FrameWSC加密机制

 

Key

KeyInnerQisda

 

 Gen Key

IV

IVInnerQisda

 

Gen IV

 

原始字符串

 

 

加密

解密

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

加密后字符串

 

  首先单击GenKey(生成密钥)按钮,单击Gen TV(生成IV) 按钮,然后在原始字符串文本中输入数据单击Encrypt(加密)按钮后,加密后的文本将显示在加密后字符串中

  需记下生成的密钥和IV(可以固定单独赋值,不用生成),因为要解密连接字符串以便再次使用,如果丢失他们,将再也无法恢复连接字符串

 

  导入命名空间 System.Security.Cryptography,所有的对称算法类都是从这个基类继承而来的

       private static string Key = "KeyInnerQisda";

     private static string IV = "IVInnerQisda";

// ICryptoTransform 是一个接口。需要此接口才能在任何服务提供程序上调用 CreateEncryptor 方法,服务提供程序将返回定义该接口的实际 encryptor 对象

然后需要将原始字符串转换成字节数组。大多数 .NET 加密算法处理的是字节数组而不是字符串

要使用名为 ms MemoryStream 对象、ICryptoTransform 对象(提供给 CryptoStream 类的构造函数)以及说明您希望在何种模式(读、写等)下创建该类的枚举常数。

创建 CryptoStream 对象 cs 后,现在使用 CryptoStream 对象的 Write 方法将数据写入到内存数据流。这就是进行实际加密的方法,加密每个数据块时,数据将被写入 MemoryStream 对象。

创建 MemoryStream 后,该代码将在 CryptoStream 对象上执行 FlushFinalBlock 方法,以确保所有数据均被写入 MemoryStream 对象。该过程将关闭 CryptoStream 对象。

该过程将内存数据流从字节数组转换回字符串,这样才可以在窗体上的文本框内显示该字符串。可以使用 MemoryStream ToArray() 方法从数据流中获取字节数组,然后调用 Convert.ToBase64String() 方法,该方法接受字节数组输入并使用 Base64 编码方法将该字符串编码为可读内容或者

    public static string Encrypt(string value){

          Byte[] byt;

            MemoryStream ms;

            ICryptoTransform ct;

            CryptoStream cs;

            ct = DESCryptoServiceProvider.CreateDecryptor(Key,IV);   //DES生成散列

            ct = SHA1CryptoServiceProvider. CreateDecryptor(Key,IV); //SHA1生成散列

            ct = MD5CryptoServiceProvider. CreateDecryptor(Key,IV); //MD5生成散列

           ct = RC2CryptoServiceProvider. CreateDecryptor(Key,IV); //RC2加密   --当前FrameWSC框架使用

           

byt = Encoding.ASCII.GetBytes(Value);

ms = new MemoryStream();

cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);

 cs.Write(byt, 0, byt.Length);

cs.FlushFinalBlock();

cs.Close();

return Convert.ToBase64String(ms.ToArray());

 

  解密方法只是将上述的3个语句变更下:

     public static string Decrypt(string value){

          Byte[] byt;

            MemoryStream ms;

            ICryptoTransform ct;

            CryptoStream cs;

            ct = RC2CryptoServiceProvider. GetDecryptor (Key,IV); //解密   --当前FrameWSC框架使用

           

byt = Convert.FromBase64String (Value);

ms = new MemoryStream();

cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);

 cs.Write(byt, 0, byt.Length);

cs.FlushFinalBlock();

cs.Close();

return Encoding.ASCII.GetString(ms.ToArray());

原创粉丝点击