C#版本的备案接口pwdHash生成代码(测试通过)
2010-02-27 22:52
639 查看
C#版本的备案接口pwdHash生成代码,已经测试通过。为了方便查看,代码放到类里面去了,关键的代码就是Hex2Bin函数和EncodeBase64,EncodeBase64直接接受的就是Hex2Bin生成的字节数组
using System; using System.Configuration; using System.Web; using System.Web.Security; using System.Text; /// <summary> ///PWDHASH 的摘要说明 /// </summary> public class PWDHASH { //测试函数 public string Test() { string Password = "123"; //用户口令 string RandStr = GetRandomString(20); //获取长度为20的随机字符串,即传递给省系统的randVal参数 return pwdHash(Password, RandStr); //获取Hash,即传递给省系统的pwdHash参数 } //生成Hash的函数,参数为用户口令和随机字符 public string pwdHash(string PassWord, string RndStr) { return EncodeBase64(Hex2Bin(MD5(PassWord + RndStr))); } //MD5,参数为字符串 public string MD5(string str) { return MD5(str, 32); } //MD5重载 public string MD5(string str, int code) { if (code == 16) { return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16); } else { return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower(); } } //16进制字符串转字节数组,参数为md5后的字符串 public byte[] Hex2Bin(string str) { byte[] byt = new byte[16]; int k = 0; for (int i = 0; i < 31; i++) { if (i % 2 == 0) { string HexCode = str.Substring(i, 2); byt[k] = (byte)Convert.ToInt16(HexCode, 16); k++; } i++; } return byt; } //base64编码,参数是字节数组 public string EncodeBase64(byte[] bytes) { return Convert.ToBase64String(bytes).ToString(); } //获取len长度的随机字符串 public string GetRandomString(int len) { string Seed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789"; string ReturnStr = ""; Random Rnd = new Random(); for (int i = 1; i <= len; i++) { ReturnStr += Seed.Substring(Rnd.Next(62), 1); } return ReturnStr; } }
相关文章推荐
- C#编程生成的Word2007版本的文件如何兼容Word2003?(通过代码将docx文件转存为doc文件)
- 不通用版(从SVN取版本,通过MAVEN生成JAVA包,通过SALTSTACK传送到远程服务器并自动重启TOMCAT服务)PYTHON代码
- C# 通过T4自动生成代码
- 测试语法高亮的 C# 代码的 html fragment 生成
- 改进C#代码之24:通过定义并实现接口替代继承
- 收了100元辛苦费,写了一个最简单的C#ASP.NET的3层架构例子代码,源码是通过代码生成器生成的【写程序的效率神奇的高】
- 秒懂C#通过Emit动态生成代码 C#使用Emit构造拦截器动态代理类
- 项目管理大法归档 - 思维导图、原型工具、接口测试、设计模式、版本管理、单元测试、持续集成、代码审查、Bug 跟踪
- C# 软工大作业完成,以下是测试版本。源代码等待稳定版本以及走查代码后再放出//需要获取全部组员同意= =
- 编写高质量代码改善C#程序的157个建议——建议115:通过HASH来验证文件是否被篡改
- C#远程开机代码 【局域网测试通过】 分类: .NET 2011-10-26 11:45 2415人阅读 评论(1) 收藏
- 秒懂C#通过Emit动态生成代码
- MD5方法代码(生成小写的md5) C#版本
- 改进C#代码之22:通过定义并实现接口替代继承
- Unity3d 通过json文件使用C#脚本代码生成多个相机
- C#远程开机代码 【局域网测试通过】
- 根据wsdl接口,通过Apache cxf 生成wsdljava客户端代码,过程中出现的问题记录
- UML工具推荐 Poseidon版本 可以免费下载,自动生成代码 C++ Java C# VB.NET等 (来自德国汉堡的国际性建模软件开发商Gentleware AG的)
- 利用wsdl文件生成webservice接口的java客户端测试代码