手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

和md5.asp结果一样的Delphi加密代码

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

1 2 3 4 5 6 下一页

实际上这种办法是有缺陷的,但是需要的就是这个缺陷(没有办法)

今天我有提过md5.ASP因为设计上的缺陷,在对双字节字符(比方说中文)进行加密的时候会和标准的md5算法(.net /IndyHashMessageDigest5 / md5.pas,这三者计算结果相同,同为以字节为单位计算岀的结果)结果有出入。

其原因在于md5.asp使用mid函数,取出的是“字符”,而正确的做法应该是取出字节,可是论坛数据库(比方说dVBbs7)中的数据已经是md5.asp的加密结果,所以我们只能将错就错,为我们的程序重写一个和md5.asp一样的加密过程
>>>> 被广泛使用的MD5.asp中似乎存在缺陷

我今天总算是用Delphi写出来了
虽然不知道asc函数得到的结果是否正确代码——我的目标是和md5.asp结果一样,现在缺的不就是这个有缺陷的程序吗?


unit AMD5;

interface

////////////////////////////////////////////
// 文件名 : AMD5.pas //
// 功能 : 与md5.asp计算结果相同 //
// 作者 : 由ScriptBaby改编自md5.asp //
// 完成时间: 2004-07-21 //
////////////////////////////////////////////

//请转载者保留以上信息,谢谢//

uses
SysUtils;

type
arrlongword = array of longword;

type
sMD5 = class
class function RotateLeft(const lValue, Bits: longword): longword;
class function MD5(const sMessage: string; const sType: boolean = false): string;
class function ConvToWord(const sMessage: string): arrlongword; overload;
class function ConvToWord(const sMessage: WideString): arrlongword; overload;
class function WordToHex(const lValue: longword): string;
end;

implementation






上一篇: 快捷方式/删除项/EXE自删除DIY
下一篇: QQ聊天记录器演示程序(二)

1 2 3 4 5 6 下一页

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!