VB调用VC的DLL的问题

SaibeiStar 2009-07-29 05:41:06
想用DES和3DES加密的函数
找到了以下几个方案

1.网上下载的DES.CLS(DES/3DES 加解密类模块 V1.0)的类模块
在调用SetKey函数时报长度错,不知道大家有用过或调用成功的吗?

Dim binKey(1 To 40) As Byte
Dim RESmm As DES
String2HEX TransKey, 16, binKey
Set RESmm = New DES
RESmm.SetKey binKey()‘报长度错

2.调用VC的dll实现

VC类型:
void WINAPI Triple_Encrypt(unsigned char *m , unsigned char * k, unsigned char * e,int n,int * rn);

我在VB的模块中声明如下:

Public Declare Function Triple_Encrypt Lib "PC.dll" (ByVal Ptrsource As Long, ByVal Key As Long, ByRef brevDATA As Long, DATLen As Long, RecvdataLen As Long) As Long

调用如下:

Dim szDataOut(100) As Byte
Dim mypicckey(0 To 7) As Byte '密码
Dim KEY1(0 To 7) As Byte '卡序列号

mypicckey(0) = &HFF
mypicckey(1) = &HFF
mypicckey(2) = &HFF
mypicckey(3) = &HFF
mypicckey(4) = &HFF
mypicckey(5) = &HFF
mypicckey(6) = &HFF
mypicckey(7) = &HFF

KEY1(0) = &HFF
KEY1(1) = &HFF
KEY1(2) = &HFF
KEY1(3) = &HFF
KEY1(4) = &HFF
KEY1(5) = &HFF
KEY1(6) = &HFF
KEY1(7) = &HFF

RES = DES_Triple_Encrypt(VarPtr(mypicckey(0)), VarPtr(Key(0)), VarPtr(szDataOut(0)), 8, 8)‘失败,没有提示VB直接退出


以上两个方案望大虾能够给解释一下,因为没用过VB,想用DES加密技术(DES加解密数据和结果都是16进制的),或有其他方案也行,我用的是VB6,谢谢

...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SaibeiStar 2009-07-30
  • 打赏
  • 举报
回复
自己搞定

Public Declare Function Triple_Encrypt Lib "PC.dll" (ByRef Ptrsource() As Byte, ByRef Key() As Byte, ByRef brevDATA() As Byte, ByVal DATLen As Long, ByVal RecvdataLen As Long)


谢谢各位回复
simon__sun 2009-07-30
  • 打赏
  • 举报
回复
'定义成这样试试
Public Declare Function Triple_Encrypt Lib "PC.dll" (ByRef Ptrsource() As Byte, ByRef Key() As Byte, ByRef brevDATA() As Byte, ByVal DATLen As Long, ByRef RecvdataLen As Long)
Tiger_Zhao 2009-07-30
  • 打赏
  • 举报
回复
http://www.mvps.org/emorcillo/download/vb6/encrypt.zip
SaibeiStar 2009-07-30
  • 打赏
  • 举报
回复
没人回答?嫌分少可以再加
贝隆 2009-07-29
  • 打赏
  • 举报
回复
学习

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧