• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# 哈希加密

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.方法一:

[c-sharp] view plaincopy
  1. //适用于C#语言   
  2. //使用前需导入以下命名空间:using System.Web.Security;   
  3. //第一个参数为需加密的字符串,第二个参数为加密的格式(只有SHA1和MD5两种,可任选一种)  
  4. public string EncryptPassword(string PasswordString, string PasswordFormat)  
  5.     {  
  6.         string EncryptPassword = null;  
  7.         if ("SHA1".Equals(PasswordFormat))  
  8.         {  
  9.             EncryptPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(PasswordString, "SHA1");  
  10.         }  
  11.         else if ("MD5".Equals(PasswordFormat))  
  12.         {  
  13.             EncryptPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(PasswordString, "MD5");  
  14.         }  
  15.         else  
  16.         {  
  17.             EncryptPassword = PasswordString;  
  18.         }  
  19.         return EncryptPassword;  
  20.     }  
  21.   
  22.   
  23. //======================加密解密方法=====================  
  24.   
  25. using System;  
  26. using System.Security.Cryptography;  
  27. using System.IO;  
  28. using System.Text;/**//// <summary>  
  29.         /// DEC 加密过程  
  30.         /// </summary>  
  31.         /// <param name="pToEncrypt">被加密的字符串</param>  
  32.         /// <param name="sKey">密钥(只支持8个字节的密钥)</param>  
  33.         /// <returns>加密后的字符串</returns>  
  34.         public string Encrypt(string pToEncrypt, string sKey)  
  35.         ...{  
  36.             //访问数据加密标准(DES)算法的加密服务提供程序 (CSP) 版本的包装对象  
  37.             DESCryptoServiceProvider des = new DESCryptoServiceProvider();   
  38.             des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量  
  39.             des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);  //原文使用ASCIIEncoding.ASCII方法的GetBytes方法  
  40.   
  41.             byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);//把字符串放到byte数组中  
  42.   
  43.             MemoryStream ms = new MemoryStream();//创建其支持存储区为内存的流   
  44.             //定义将数据流链接到加密转换的流  
  45.             CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);  
  46.             cs.Write(inputByteArray, 0, inputByteArray.Length);  
  47.             cs.FlushFinalBlock();  
  48.             //上面已经完成了把加密后的结果放到内存中去  
  49.   
  50.             StringBuilder ret = new StringBuilder();  
  51.             foreach (byte b in ms.ToArray())  
  52.             ...{  
  53.                 ret.AppendFormat("{0:X2}", b);  
  54.             }  
  55.             ret.ToString();  
  56.             return ret.ToString();  
  57.         }  
  58.   
  59.        /**//**//**//// <summary>  
  60.         /// DEC 解密过程  
  61.        /// </summary>  
  62.         /// <param name="pToDecrypt">被解密的字符串</param>  
  63.         /// <param name="sKey">密钥(只支持8个字节的密钥,同前面的加密密钥相同)</param>  
  64.        /// <returns>返回被解密的字符串</returns>  
  65.         public string Decrypt(string pToDecrypt, string sKey)  
  66.         ...{  
  67.             DESCryptoServiceProvider des = new DESCryptoServiceProvider();  
  68.   
  69.             byte[] inputByteArray = new byte[pToDecrypt.Length / 2];  
  70.             for (int x = 0; x < pToDecrypt.Length / 2; x++)  
  71.             ...{  
  72.                 int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));  
  73.                 inputByteArray[x] = (byte)i;  
  74.             }  
  75.   
  76.             des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量,此值重要,不能修改  
  77.             des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);  
  78.             MemoryStream ms = new MemoryStream();  
  79.             CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);  
  80.   
  81.             cs.Write(inputByteArray, 0, inputByteArray.Length);  
  82.             cs.FlushFinalBlock();  
  83.   
  84.             //建立StringBuild对象,createDecrypt使用的是流对象,必须把解密后的文本变成流对象  
  85.             StringBuilder ret = new StringBuilder();   
  86.   
  87.             return System.Text.Encoding.Default.GetString(ms.ToArray());  
  88.         }  

 

具体在程序中使用加密解密算法的例子如下: 在发送页面 Response.Redirect("~/GridView.aspx?ID=" + Encrypt("zlh","abcdefgh"));

 

在接受页面 str


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
第23章 I2C—读写EEPR发布时间:2022-07-13
下一篇:
Ctypedef发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap