环境vb6.0此模块是网上找的des加密类模块
我想用这个模块调用其中函数
可总出些莫名其妙的错误
Public Sub SetKey(K_Bit() As Byte)
Public Sub SetKey1(K_Bit() As Byte)
Public Sub SetKey2(K_Bit() As Byte)
Public Sub EncryptDes_ArrToArr(m_bit() As Byte, e_bit() As Byte, [bUseKeyNo As Byte = 1], [bFlag As Byte = 1])
Public Sub Encrypt3Des_ArrToArr(m_bit() As Byte, e_bit() As Byte, [bFlag As Byte = 1])
问题1
Dim K_Bit(8) As Byte
Dim S_K_BIT As StringS_K_BIT = "12345678"Dim i As Integer
For i = 1 To 8 Step 1
K_Bit(i - 1) = CByte(Mid(S_K_BIT, i, 1))
NextSetKey (K_Bit())
编译错误,类型不匹配,缺少数组或用户定义类型
最后一行换成SetKey (K_BIT)也不行,非的我传字符串才行,为什么?问题2
调用EncryptDes_ArrToArr的时候,
EncryptDes_ArrToArr(k_bit(),outbit(),1,1)总提示"缺少="(语法错误)
非要写成a=EncryptDes_ArrToArr(k_bit(),outbit(),1,1)才行
1.1.sub不是没有返回值吗,为什么不写a=就会有语法错误
1.2.是不是由于我的参数类型不对呢?m_bit()是字节数组,应该传进去什么样的值
问题3
调用sub的时候,什么时候加括号,什么时候可以不加?有什么区别?
subname p1 p2
subname (p1,p2)出现以上问题我觉得是我很多基本概念不清,请大家指点,谢谢

解决方案 »

  1.   

    这样也不行Dim oDES As New Class1
    Dim KBit(16) As Byte
    Dim S_K_BIT As StringS_K_BIT = "1234567890abcdef"Dim i As Integer
    For i = 1 To 16 Step 1
        KBit(i - 1) = Asc(Mid(S_K_BIT, i, 1))
    NextoDES.SetKey (KBit) 或 oDES.SetKey (KBit())
    也不行,还是"编译错误,类型不匹配,缺少数组或用户定义类型"
      

  2.   

    针对于你的问题,现在无法回答,我需要知道那两个函数的原形。
    不过,你可以把那个循环赋值的代码段改成一句话:
    Dim K_Bit() AS Byte
    ReDim K_Bit(0 to 7)
    K_Bit=StrConv("12345678",vbFromUnicode )
    看看,如果结果还不对,就把那两个函数的源代码发上来。
      

  3.   

    上一答针对问题1。
    针对问题2:
    EncryptDes_ArrToArr(k_bit(),outbit(),1,1)总提示"缺少="(语法错误)
    肯定会这样提示,因为如果你要调用SUB定义的过程必须写成:
    EncryptDes_ArrToArr K_Bit(),OutBit(),1,1
    或者
    Call EncryptDes_ArrToArr(k_bit(),outbit(),1,1)
    即可
      

  4.   

    用K_Bit=StrConv("12345678",vbFromUnicode )也还是不行。类型不匹配
    函数代码如下
    其他问题解决了,谢谢NewViewStudio
     '=========================================================================
        ' SetKey1 函数说明:
        ' 设置3DES加/解密的的第一个密钥
        ' 返回:
        ' 无
        ' 参数:
        ' K_Bit() AS Byte 密钥,不少于8个元素
        '======================================================================
        Sub SetKey1(K_Bit() As Byte)
         '//根据密钥生成16个子密钥
         Dim Key() As Byte
         ReDim Preserve Key(7) As Byte
         GenSubKey Key(), key_n1()
        End Sub
         
        '=========================================================================
        ' SetKey2 函数说明:
        ' 设置3DES加/解密的的第二个密钥
        ' 返回:
        ' 无
        ' 参数:
        ' K_Bit() AS Byte 密钥,不少于8个元素
        '===========================================================================
        Sub SetKey2(K_Bit() As Byte)
         '//根据密钥生成16个子密钥
         Dim Key() As Byte
         ReDim Preserve Key(7) As Byte
         GenSubKey Key(), key_n2()
        End Sub
        '===========================================================================