7,763
社区成员
发帖
与我相关
我的任务
分享
Public Declare Function crypt Lib "RC5.dll" (ByVal Data As String, ByVal Length As Long, ByVal HEX As Boolean, ByVal flag As Boolean) As String
Private Sub Command3_Click()
Dim str1 As String
Dim lenLong As Long
' 5257536751555167555051675253535553565453484848484848484848484848
str1 = "5257536751555167555051675253535553565453484848484848484848484848"
' str1 = Left(str1, 20)
str1 = HexToStr(str1)
lenLong = Len(str1)
str2 = crypt(str1, lenLong, False, False)
Debug.Print str2
End Sub
''' 16 转化成 str
Public Function HexToStr(ByVal strs As String) As String
Dim i As Integer, tmp As String, n
If Len(strs) Mod 2 Then Exit Function
For i = 1 To Len(strs) Step 2
n = Val("&H" & Mid(strs, i, 2))
If n < 0 Or n > 127 Then
n = Val("&H" & Mid(strs, i, 4))
i = i + 2
End If
tmp = tmp & Chr(n)
Next i
HexToStr = tmp
End Function
Private Declare Function crypt Lib "B:\RC5.dll" (ByRef Data As Any, ByVal Length As Long, ByVal HEX As Boolean, ByVal flag As Boolean) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, ByVal Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
Dim str1 As String
Dim aryin() As Byte
Dim lenLong As Long
Dim ret As Long
Dim strout As String
Dim aryOut(100) As Byte
Dim i As Integer
str1 = "I\7<r<EWXe"
lenLong = Len(str1)
aryin = StrConv(str1, vbFromUnicode)
ret = crypt(aryin(0), lenLong, False, False)
CopyMemory aryOut(0), ret, 10
strout = StrConv(aryOut, vbFromUnicode)
For i = 0 To 10
Debug.Print Chr(aryOut(i));
Next
End Sub
楼主给的测试用例是特么错的!!!!
函数的输入和输出都是指针,所以要做一些处理