当前位置: 首页 > 编程日记 > 正文

ASP.Net中MD5加密-16位32位

None.gifpublic string md5(string str,int code)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
if(code==16//16位MD5加密(取32位加密的9~25字符)
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;
ExpandedSubBlockEnd.gif}
 
InBlock.gif
else//32位加密
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();
ExpandedSubBlockEnd.gif}
 
ExpandedBlockEnd.gif}

None.gif

关于ASP,ASP.NET,VB.NET里的MD5加密函数 在ASP中,我们使用过如动网论坛等用的ASP中MD5函数加密出的字符串则如:
1165d25d8cd021d5

   而在Asp.Net中下面的方法: 代码

None.gifSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text,"MD5")//进行MD5加密出来的结果却是: 
None.gif
12C403B91165D25D8CD021D5F9B5BB7F
None.gif

究其原因,是因为,在ASP中的MD5函数是使用了32位MD5 Hashvalue中的第9~25位再变小写作为密文。知道这个原因,把ASP.NET的结果稍加处理就可以用来比较老数据库中的密码字串了。
在ASP的MD5函数中第353、354行: 代码
´MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
MD5=LCase(WordToHex(b) & WordToHex(c)) ´I crop this to fit 16byte database password :D

第一句是取全部的32位密文,第二句则是取中间第9~25位为16位密文。

到了vb.net问题又来了,在vb.net里,无法用到System.Web.Security名称空间,无法用上面简单的办法进行MD5加密。故我写了下面这个函数来处理:

VB.NET: 代码´MD5 加密函数 

ExpandedBlockStart.gifContractedBlock.gifPublic Shared Function MD5()Function MD5(ByVal strSource As StringByVal Code As Int16) As String 
InBlock.gif´这里用的是ascii编码密码原文,如果要用汉字做密码,可以用UnicodeEncoding,但会与ASP中的MD5函数不兼容 
InBlock.gif
Dim dataToHash As Byte() = (New System.Text.ASCIIEncoding).GetBytes(strSource) 
InBlock.gif
Dim hashvalue As Byte() = CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5"), System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash) 
InBlock.gif
Dim i As Integer 
InBlock.gif
Select Case Code 
InBlock.gif
Case 16 ´选择16位字符的加密结果 
InBlock.gif
For i = 4 To 11 
InBlock.gifMD5 
+= Hex(hashvalue(i)).ToLower 
InBlock.gif
Next 
InBlock.gif
Case 32 ´选择32位字符的加密结果 
InBlock.gif
For i = 0 To 15 
InBlock.gifMD5 
+= Hex(hashvalue(i)).ToLower 
InBlock.gif
Next 
InBlock.gif
Case Else ´Code错误时,返回全部字符串,即32位字符 
InBlock.gif
For i = 0 To hashvalue.Length - 1 
InBlock.gifMD5 
+= Hex(hashvalue(i)).ToLower 
InBlock.gif
Next 
InBlock.gif
End Select 
ExpandedBlockEnd.gif
End Function

原文链接:http://dev.poptool.net/asp/2005-11-22/0511221855.html

转载于:https://www.cnblogs.com/ghx88/archive/2006/06/16/427219.html

相关文章:

PL/SQL编程:将两个数进行交换的存储过程

创建过程exchangeTwo 调用过程enchangeTwo

WCF之多个终结点

1.服务端配置如下&#xff08;一个Service节点下可有多个endpoint,&#xff09;&#xff1a; 1 1<system.serviceModel>2 2 <services>3 3 <service name"Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration"returnFaul…

YAML 语言入门教程

2019独角兽企业重金招聘Python工程师标准>>> YAML简介 另一种标记语言&#xff08;Yet Another Markup Language&#xff09; YAML&#xff08;英语发音&#xff1a;/ˈjməl/&#xff0c;尾音类似camel骆驼&#xff09;是一个可读性高&#xff0c;用来表达资料序列…

我翻译的一篇文章,OO设计中对象的创建和使用

OO设计中对象的创建和使用 转载于:https://www.cnblogs.com/lishu1980/archive/2006/06/22/432526.html

SQL Server Profiler工具

SQL Server Profiler工具 原文:SQL Server Profiler工具一、SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程&#xff0c;其作用如下&#xff1a; 图形化监视SQL Server查询&#xff1b;在后台收集查询信息&#xff1b;分析性能&#xff1b;诊断像死锁之类…

Nginx—核心配置location匹配规则说明

2019独角兽企业重金招聘Python工程师标准>>> location介绍 location指令是Nginx中最核心的一项配置&#xff0c;根据预先定义的URL匹配规则来接收用户发送的请求&#xff0c;根据匹配结果&#xff0c;将请求转发到后台服务器、非法的请求直接拒绝并返回403&#xff…

Windows Live Messenger  正式版已经发布

Windows Live Messenger 正式版已经发布!这是新一代的 Messenger。它拥有全新的名字&#xff0c;可以免费下载。并且除了延续使用原 Messenger 的全部功能外&#xff0c;它还提供了几种出色的全新交流方式&#xff0c;实现与朋友的即时共享和交流。转载于:https://www.cnblogs.…

关闭ubuntu启动时System Program Problem Detected提示

修改vi /etc/default/apport 将其值设置1-->0转载于:https://www.cnblogs.com/snail-micheal/p/3607969.html

C++开源跨平台类库集

在如下的库支持下&#xff0c;开发的系统可以很方便移植到当前大部分平台上运行而无需改动&#xff0c;只需在对应的平台下 用你喜欢的编译器 重新编译即可 经典的C库 STLport-------SGI STL库的跨平台可移植版本&#xff0c;在以前有些编译器离符合 标准比较远的情况…

僵尸进程和孤儿进程

一 . 僵尸进程: 子进程退出&#xff0c;父进程没有回收子进程资源&#xff08;PCB&#xff09;&#xff0c;则子进程变成僵尸进程 处理僵尸进程的方法&#xff1a;wait 和 waitpid 调用wait和waitpid不仅可以获得子进程的终止信息&#xff0c;还可以使父进程阻塞等待子进程终止…

Castle ActiveRecord(一)概述

一、ActiveRecord与Castle ActiveRecordActiveRecord是《Patterns of Enterprise Application Architecture》中描述的著名模式。基本上&#xff0c;当实例每一行的时候&#xff0c;所有的静态方法会作用于全部纪录。 Castle ActiveRecord 是ActiveRecord 模式的一个实现&am…

一步步学习SPD2010--第十一章节--处理母版页(8)--从母版页创建网页

一步步学习SPD2010--第十一章节--处理母版页&#xff08;8&#xff09;--从母版页创建网页 在SPD中&#xff0c;你可以使用许多不同的方法创建ASP.NET页面。然而&#xff0c;因为页面将是SP网站的一部分&#xff0c;你很可能想像其他页面一样&#xff0c;保持相同的导航元素和外…

Confluence 6 查看空间活动

空间活动信息是默认禁用&#xff08;disabled by default&#xff09;的。活动&#xff08;Activity&#xff09;的标没有显示&#xff0c;如果你的 Confluence Usage Stats 插件没有启用的。请查看下面的说明&#xff1a; 如果启用的话&#xff0c;空间活动界面显示了每一个空…

flash模拟EEROM

FLASH中&#xff1a;0x08000000--0x08000000SIZE保存的是用户代码 Rule&#xff1a; 16位为传输单位 读数据&#xff1a; u16 STMFLASH_ReadHalfWord(u32 faddr) 可以在通用地址空间直接寻址&#xff1a;data*(vu16*)ADDR;[ADDR为32位数据&#xff0c;指向的数据为uv16型]写数据…

OSChina 周六乱弹 —— 就少个接吻的女友了

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单&#xff08;2018&#xff09;请戳&#xff08;这里&#xff09; 【今日歌曲】 andonny &#xff1a;分享Mamas & The Papas的单曲《California Dreaming》 《California Dreaming》- Mamas & The …

存儲過程解密SQL

存儲過程解密SQLif exists (select * from dbo.sysobjects where id object_id(N[dbo].[sp_decrypt]) and OBJECTPROPERTY(id, NIsProcedure) 1)drop procedure [dbo].[sp_decrypt]GO /*--破解函數,視圖,程儲過程,触發器,限于SQLSERVER2000 --作者:J9988--*//*--使用示例 --解…

软件缺陷生命周期图示及当中涉及到的缺陷的状态

缺陷状态&#xff1a; 激活/打开 已修正 已关闭/非激活 重新打开(对应图示验证通过否N) 推迟(对应图示的延期) 保留(对应图示无法解决) 不能重现 需要更多信息

Adding a QR Code Reader in Flex on Android

<?xml version"1.0" encoding"utf-8"?> <s:View xmlns:fx"http://ns.adobe.com/mxml/2009" xmlns:mx"library://ns.adobe.com/flex/mx"xmlns:s"library://ns.adobe.com/flex/spark" title"HomeView"&g…

41-高级路由:BGP AS长度:接收一切、最大AS长度、不比较AS长度

一、实验拓扑&#xff1a;二、实验要求&#xff1a;1、R4配置同上个实验&#xff1b;2、R3配置接收的路由包含最大AS长度为4&#xff1b;3、R3配置隐藏命令&#xff0c;不比较AS长度&#xff1b;4、R5配置不管收到的路由有没有包含本地AS都收入&#xff08;之前R4已经配置了4.4…

利用动态加载模板,配合ajax实现无刷新操作

关键字&#xff1a;DataGrid 动态模板 Ajax我们使用ajax实现无刷新界面时&#xff0c;对于DataGrid&#xff0c;Repeater等列表还是比较麻烦的&#xff0c;经过我的尝试&#xff0c;找出一种比较合理的方法&#xff0c;可以免除对html的加工处理&#xff0c;随时获取到数据列表…

如何利用业余时间提升自己

1、要找到心动的目标 先要找到自己如果提升哪一方面的能力&#xff0c;能够对自己的工作有较大的贡献 找到你想成为的人 你从他身上找到你想拥有的技能 你喜欢某个人的身上的某种行为表现 也是你的榜样 或者从你的爱好着手发现你在爱好中能够得到提升的点 我想发展的工作技能是…

Eclipse插件的安装方法

转自&#xff1a;http://blog.csdn.net/zhangyabinsky/article/details/7043435 Eclipse插件的安装有两种方法 &#xff1a;一个是在线安装&#xff0c;另一个就是手动安装。 在线安装比较简单&#xff1a;点击Help>>Install New Software..如图&#xff1a; 这样会跳出一…

(转)uml 静态视图依赖

依赖 依赖表示两个或多个模型元素之间语义上的关系。它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。它表示了这样一种情形&#xff0c;提供者的某些变化会要求或指示依赖关系中客户的变化。 根据这个定义&#xff0c;关联和泛化都是依赖关系&#xff0c;但是它…

白盒测试各种“覆盖”间的拓扑关系及白盒用例常用要求

SC为语句覆盖 DC为分支覆盖/判定覆盖 CC为条件覆盖 CDC为判定-条件覆盖 MCC为条件组合覆盖 MC/DC修正条件/判定覆盖 BPC为基本路径覆盖

[转]实战 SQL Server 2008 数据库误删除数据的恢复

实战 SQL Server 2008 数据库误删除数据的恢复 关键字&#xff1a;SQL Server 2008, recover deleted records 今天有个朋友很着急地打电话给我&#xff0c;他用delete语句误删除了SQL Server 2008数据库中两个表中的所有记录&#xff0c;而这个数据库之前没有任何备份。让我帮…