最初由 holmescn 发布
因为算法计算器算出的结果总是对不上,那个Crypto++也不会用,文档太少了,搞不明白。所以我想了个着。LuoX30NDl.dll里有各种算法的库函数。于是想到就用它了。用waspack把它脱掉,dll2lib做出lib来,根据调试的过程分析出三个函数的原型:
char* DesEn(char*,char*)
char* DesDe(char*,char*)
char* MD5En(char*)
奇迹是在自己的程序里写了一个MD5的算法,我就用库里的了。
........
这个库是ksaiy做的。奇迹作者用的是免费版本。
//模块作者:ksaiy
//Email:ksaiy@sina.com
//主页:http://www.ksaiy.com
//版权所有(C) JesionSoft 2004-2005
//更新时间:2004年12月23日
//我们开发的模块有分两个版本:一个免费版本,二是收费版本;在免费版本
//版本里面没有任何的功能限制;在收费版本中也没有功能限制,未注册的模
//块在返回的结果中多了一个字符串"ksaiy",如果你注册了模块就没有任何
//限制了,关于注册费用可以查看这里:http://www.ksaiy.com/ynen/Service.asp
//免费模块可以到我们的主页下载:http://www.ksaiy.com/ynen/index.asp
//为了说明以下函数如果有两个参数,一个是加密/解密字符串和KEY,那么就
//用'ksaiy'来代表加密字符串,用'1234567890';来代表key,如果只有一个
//参数的话,就用'ksaiy'来代表要加密的字符串;
//由于这个DLL需要在其它语言中使用,所以返回值和参数都使用了PChar型,在
//DELPHI中使用的时候用Strpas来把PChar型转换为String;
//这里以DELPHI语言为例说明,如果需要其它语言的说明请访问我们的主页。
//BlowFish算法加密函数
function BlowFishEn(BlStr:PChar;BLKey:PChar):Pchar;stdcall;
For Example:
//BLStr代表要加密的字符串,而BlKey是key;
var
Str:String;
begin
Str:=StrPas(BlowFishEn(PChar('ksaiy'),PChar('1234567890')));
Edit1.Text:=Str;//得到加密结果;
end;
//变形MD5算法家密函数
function CMD5En(CMStr:PChar):PChar;Stdcall;
For Example:
//BMStr为需要加密的字符串;
var
Str:String;
begin
Str:=StrPas(CMStr(PChar('ksaiy')));
Edit1.text:=Str;
end;
//DES算法加密函数
function DesEn(DStr:PChar;DKey:PChar):Pchar;Stdcall;
For Example:
//DStr为需要加密的字符串,DKey为key;
var
Str:String;
begin
Str:=StrPas(DesEn(PChar('ksaiy'),PChar('1234567890')));
Edit1.text:=Str;
end;
//DES算法解密函数
function DesDe(DeStr:PChar;Dekey:PChar):Pchar;stdcall;
For Example:
//DeStr为需要解密的字符串,Dekey为key;
var
Str:String
begin
Str:=StrPas(DesDe(PChar('ksaiy'),PChar('1234567890')));
Edit1.text:=Str;
end;
//Base64算法加密函数
function Base64En(BsStr:PChar):Pchar;Stdcall;
For Example:
//BsStr为需要加密字符串;
var
Str:String;
begin
Str:=StrPas(Base64En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//AES算法加密函数
function AESEn(AStr:PChar;AKey:PChar):Pchar;Stdcall;
For Example:
//AStr为需要加密的字符串,AKey为key;
var
Str:String;
begin
Str:=Strpas(AESEn(PChar('ksaiy'),PChar('1234567890')));
Edit1.text:=Str;
end;
//MD2算法加密函数
function MD2En(MD2Str:PChar):PChar;Stdcall;
For Example:
//MD2Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(MD2En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//MD4算法加密函数
function MD4En(MD4Str:PChar):PChar;Stdcall;
For Example:
//MD4Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(MD4En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//MD5算法加密函数
function MD5En(MD5Str:PChar):PChar;Stdcall;
For Example:
//MD5Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(MD5En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//SHA1算法加密函数
function SHA1En(SHA1Str:PChar):PChar;Stdcall;
For Example:
//SHA1Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(SHA1En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//SHA256算法加密函数
function SHA256En(SHA256Str:PChar):PChar;Stdcall;
For Example:
//SHA256Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(SHA256En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//SHA384算法加密函数
function SHA384En(SHA384Str:PChar):PChar;Stdcall;
For Example:
//SHA384Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(SHA384En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//SHA512算法加密函数
function SHA512En(SHA512Str:PChar):PChar;Stdcall;
For Example:
//SHA512Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(SHA512En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//HAVAL128算法加密函数
function HAVAL128En(HAVAL128Str:PChar):PChar;Stdcall;
For Example:
//HAVAL128Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(HAVAL128En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//HAVAL160算法加密函数
function HAVAL160En(HAVAL160Str:PChar):PChar;Stdcall;
For Example:
//HAVAL160Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(HAVAL160En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//HAVAL192算法加密函数
function HAVAL192En(HAVAL192Str:PChar):PChar;Stdcall;
For Example:
//HAVAL192Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(HAVAL192En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//HAVAL224算法加密函数
function HAVAL224En(HAVAL224Str:PChar):PChar;Stdcall;
For Example:
//HAVAL224Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(HAVAL224En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//HAVAL256算法加密函数
function HAVAL256En(HAVAL256Str:PChar):PChar;Stdcall;
For Example:
//HAVAL256Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(HAVAL256En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//GOST算法加密函数
function GOSTEn(GOSTStr:PChar):PChar;Stdcall;
For Example:
//GOSTStr为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(GOSTEn(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//TIGER128算法加密函数
function TIGER128En(TIGER128Str:PChar):PChar;Stdcall;
For Example:
//TIGER128Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(TIGER128En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//TIGER160算法加密函数
function TIGER160En(TIGER160Str:PChar):PChar;Stdcall;
For Example:
//TIGER160Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(TIGER160En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//TIGER192算法加密函数
function TIGER192En(TIGER192Str:PChar):PChar;Stdcall;
For Example:
//TIGER192Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(TIGER192En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//RIPE-MD128算法加密函数
function RIPEMD128En(RIPEMD128Str:PChar):PChar;Stdcall;
For Example:
//RIPEMD128Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(RIPEMD128En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//RIPE-MD160算法加密函数
function RIPEMD160En(RIPEMD160Str:PChar):PChar;Stdcall;
For Example:
//RIPEMD160Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(RIPEMD160En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//CRC32算法加密函数
function CRC32En(CRC32Str:PChar):PChar;Stdcall;
For Example:
//CRC32Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(CRC32En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//CRC32B算法加密函数
function CRC32BEn(CRC32BStr:PChar):PChar;Stdcall;
For Example:
//CRC32BStr为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(CRC32BEn(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//Adler32算法加密函数
function Adler32En(Adler32Str:PChar):PChar;Stdcall;
For Example:
//Adler32Str为需要加密的字符串
var
Str:String;
begin
Str:=StrPas(Adler32En(PChar('ksaiy')));
Edit1.Text:=Str;
end;
//3Des算法加密函数
Function Des3En(Des3EnStr:PChar;EnKey1:PChar;EnKey2:PChar;EnKey3:PChar):PChar;Stdcall;
For Example:
//Des3EnStr为需要加密的字符串,EnKey1,EnKey2,EnKey3为key
//注意三个key必须不能一样;
var
Str:String;
begin
Str:=StrPas(Des3En(PChar('ksaiy'),PChar('123'),PChar('456'),PChar('789')));
Edit1.Text:=Str;
end;
//3Des算法解密函数
Function Des3De(Des3DeStr:PChar;DeKey1:PChar;DeKey2:PChar;DeKey3:PChar):PChar;Stdcall;
For Example:
//Des3DeStr为需要解密的字符串,DeKey1,DeKey2,DeKey3为key
//注意三个key必须不能一样;
var
Str:String;
begin
Str:=StrPas(Des3De(PChar('ksaiy'),PChar('123'),PChar('456'),PChar('789')));
Edit1.Text:=Str;
end;
//Anti-Debug反跟踪程序
function WinAntiDebug():Boolean;stdcall;
For Example:
begin
if WinAntiDebug=True then
Edit1.Text:='有调试工具!';
//这里你可以调用关机函数;
end;
//关闭计算机函数
function CloseWindow(flags: integer): boolean;stdcall;//关闭计算机函数;
For Example:
begin
CloseWindow(EWX_SHUTDOWN or EWX_POWEROFF);
end;
//CRC文件校验
function CrcFileEn(CrcFileName:PChar):Pchar;stdcall;
For Example:
//CrcFileName为需要进行CRC校验的文件名;
var
Str:String;
begin
Str:=StrPas(CrcFileEn('C:\1.exe'));//就是你需要校验的文件名;
Edit1.text:=Str;
end;
//检测Win2000/XP下的SoftIce
Function SoftIceXP:Boolean;stdcall;
For Example:
begin
if SoftIceXP=True then
Edit1.Text:='有调试工具!';
//这里你可以调用关机函数;
end;
//检测Dump;
Function AntiDump: Boolean;stdcall;
For Example:
begin
if AntiDump=True then
Edit1.Text:='有调试工具!';
//这里你可以调用关机函数;
end;
//检测RegMON;
Function AntiRegMon: Boolean;stdcall;
For Example:
begin
if AntiRegMon=True then
Edit1.Text:='有调试工具!';
//这里你可以调用关机函数;
end;
//检测FileMON;
Function AntiFileMon: Boolean;stdcall;
For Example:
begin
if AntiFileMon=True then
Edit1.Text:='有调试工具!';
//这里你可以调用关机函数;
end;
//检测调试器;
Function WinAntiLoader():Boolean;stdcall;
For Example:
begin
if WinAntiLoader=True then
Edit1.Text:='有调试工具!';
//这里你可以调用关机函数;
end;
//所有算法的输出集合
function SHCEn(SHCEnStr,SHCKey:PChar):Pchar;stdcall;
For Example:
//SHCEnStr为需要加密的字符串,SHCKey为key;
var
Str:String;
begin
Str:=StrPas(SHCEn(PChar('ksaiy'),PChar('1234567890')));
Edit1.Text:=Str;
end;
//进行明码变换;
Function ChangeCode(ChangeStr:PChar):PChar;stdcall;
For Example:
//ChangeStr为需要变换的字符串,用于进行明码到非明码的变换;
var
Str:String;
begin
Str:=Strpas(ChangeCode(PChar('ksaiy')));
end;
//获取硬盘系列号;
Function GetHDID():Pchar;stdcall;
For Example:
begin
Edit1.Text:=StrPas(GetHDID);
end;
//获取CPU系列号;
Function GetCpuID:PChar;stdcall;
For Example:
begin
Edit1.Text:=StrPas(GetCpuID);
end;
//获取网卡系列号;
function GetNetID:PChar;stdcall;
For Example:
begin
Edit1.Text:=StrPas(GetNetID);
end;
//获取BIOS系列号
function GetBiosID():PChar;Stdcall;
For Example:
begin
Edit1.Text:=StrPas(GetBiosID);
end;