嘿所有我想弄清楚如何让以下工作或替换以便工作:
模块1:
Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
Dim sTemp, sPassword As String
sTemp = "this is a test"
Debug.Print(" To encrypt: " & sTemp)
sPassword = "blk@vjdii:5@fAB5"
Debug.Print(StrReverse(sPassword))
sPassword = Str2Hex(strEncrypt(sPassword, StrReverse(sPassword)))
Debug.Print(" Secret key: " & sPassword)
sTemp = Str2Hex(strEncrypt(sTemp, sPassword))
Debug.Print(" Encrypt: " & sTemp)
sTemp = Base64EncodeString(sTemp)
Debug.Print("Encrypt w/ Base64: " & sTemp)
sTemp = Base64DecodeString(sTemp)
Debug.Print("Decrypt w/ Base64: " & sTemp)
sTemp = Hex2Str(sTemp)
Debug.Print(" Decrypt: " & strDecrypt(sTemp, sPassword))
End Sub
This code works just fine when using it within the VBA excel code. This is the VB6 output:
用户窗体:
filter(line)
要加密:这是一个测试
密钥:F050C1C2B61E8DCC349DC498D9993F8D11330F12D9E0071B4B83D172FEBE5AED
加密:F899ABA853D21B20F889CFD18BB42C472187B4E1CF613139370313DFD8A492DE
使用Base64进行加密:
Rjg5OUFCQTg1M0QyMUIyMEY4ODlDRkQxOEJCNDJDNDcyMTg3QjRFMUNGNjEzMTM5MzcwMzEzREZEOEE 0OTJERQ ==
与Base64解密:F899ABA853D21B20F889CFD18BB42C472187B4E1CF613139370313DFD8A492DE
解密:这是一个测试
然而,当将其转换为.net时,我得到错误:
算术运算导致溢出。
CopyMemory(VarPtr(bytIn(0)),VarPtr(lLength),4)。
如何重新编写它以使其工作,以便VB.net和VB6可以共享代码库,以便来回加密/解密字符串消息?
答案 0 :(得分:2)
在VB.NET中使用Array.Copy方法。 VB.NET具有与VB6完全不同的内存模型。您不能在VB.NET中应用VB6 DLL中的VB6函数! .NET有自己的加密系统。请参阅:System.Security.Cryptography Namespace
Array.Copy(bytTemp, 0, bytIn, lCount, 32)
VB.NET不仅仅是一个VB7。 VB.NET是一种全新的语言,具有全新的类型系统,新的库,新的DLL和EXE结构,新的运行时基础结构,新的......(几乎所有内容都是新的)
正如Hans Passant已经暗示的那样:拥有VB6和VB.NET的通用代码库几乎是不可能的