首页
社区
课程
招聘
[求助]关于Crypto Hash 模块在VB下的使用
发表于: 2009-5-18 12:03 4371

[求助]关于Crypto Hash 模块在VB下的使用

2009-5-18 12:03
4371
http://bbs.pediy.com/showthread.php?t=43349
PEDIY找到这篇帖子   里面有个Crypto Hash 模块

想在VB里用ThunderVB 控件用它的函数 对汇编不大熟悉 弄了半天 都没弄好
不知道问题出在哪里    请知道的朋友帮忙看看  谢谢

C里面调用是成功的   代码如下

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "cryptohash.h"

#pragma comment(linker,"/DEFAULTLIB:cryptohash.lib")

SHA1String(char *sz)
{
        char szSHA1[SHA1_DIGESTSIZE*2+2];
        SHA1Init();
        SHA1Update((BYTE *)sz,strlen(sz));
        HexEncode(SHA1Final(),SHA1_DIGESTSIZE,(BYTE *)szSHA1);
        puts((char *)&szSHA1);
}

int main(int argc,char *argv[])
{
        SHA1String("a");

        return getchar();
}

这是这3个函数C的声明
BYTE * __stdcall SHA1Init ();
       __stdcall SHA1Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall SHA1Final ();

在VB下 用ThunderVB控件  想用汇编调用  弄了半天 不知道什么原因vb_SHA1Final返回数每次都是一样的  应该是汇编返回语句写错了 ..对汇编不太懂  请知道的朋友 帮忙看下 谢谢

Option Explicit

Private Sub ASM_DEF()

'#asm'
'#asm' includelib E:\masm32\LIB\cryptohash.lib
'#asm' SHA1Init PROTO STDCALL
'#asm' SHA1Update PROTO STDCALL :dword, :dword
'#asm' SHA1Final PROTO STDCALL
'#asm'

End Sub

Public Sub vb_SHA1Init()
'#asm'
'#asm'  INVOKE SHA1Init
'#asm'

End Sub

Public Function vb_SHA1Update(ByVal lpBuffer As Long, ByVal dwBufLen As Long)
    '#asm'
    '#asm'  mov ecx, [esp+4];lpBuffer
    '#asm'  mov edx, [esp+8];dwBufLen
    '#asm'
    '#asm'  INVOKE SHA1Update,ecx,edx
    '#asm'
End Function

Public Function vb_SHA1Final() As Long
    '#asm'
    '#asm'  INVOKE SHA1Final
    '#asm'  ret 4
    '#asm'
End Function

窗体代码
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long)

Private Sub Form_Load()
Dim i As Long
Dim buf(19) As Byte
Dim ret As String

vb_SHA1Init

vb_SHA1Update i, 1

CopyMemory VarPtr(buf(0)), vb_SHA1Final, 20

For i = 0 To 19
    ret = ret & Right$("0" & Hex$(buf(i)), 2)
Next
MsgBox ret
End Sub

这个是ThunderVB的下载地址
http://bbs.pediy.com/showthread.php?t=67090

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
难道只能做DLL吗?  
期待高手解答
2009-5-19 08:27
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
哎  几天了 一个人都没有...
看来高手们只对系统相关的东西感兴趣.  

自己做DLL了.
2009-5-22 21:36
0
游客
登录 | 注册 方可回帖
返回
//