加密机制

本文介绍如何使用MD5、SHA1等算法加密密码,并将其存储于数据库中进行身份验证。同时,介绍了FrameWSC加密机制,包括密钥生成、初始化向量(IV)选择、数据加密与解密的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值