我想加密文件。我使用异或来加密它。但是,问题是,我可以加密,但是当我要解密它,它给了我不同的结果(而不是原始文件)XOR加密在加密和解密时给予不同的结果
这里是我使用
Public Function Encrypt(ByVal txt As String, ByVal pass As String) As String
Dim mem() As Byte
mem = StrConv(txt, vbFromUnicode)
For i = 0 To UBound(mem)
mem(i) = Asc(mem(i)) Xor Asc(Mid(pass, (i Mod Len(pass)) + 1, 1))
Next i
Encrypt = StrConv(mem, vbUnicode)
Erase mem
End Function
Public Function Decrypt(ByVal txt As String, ByVal pass As String) As String
Dim mem() As Byte
mem = StrConv(txt, vbFromUnicode)
For i = 0 To UBound(mem)
mem(i) = Asc(mem(i)) Xor Asc(Mid(pass, (i Mod Len(pass)) + 1, 1))
Next i
Decrypt = StrConv(mem, vbUnicode)
Erase mem
End Function
Private Sub Form_Load()
Enkrip = Encrypt(txt.LoadFile("C:\mom.txt"), "FROM YOUR SON")
dekrip = Decrypt(Enkrip, "FROM YOUR SON")
MsgBox Enkrip & vbCrLf & dekrip
End Sub
值的代码dekrip的应该是C的原始内容:\ mom.txt,但它返回不同的结果
我也试过这个代码,它工作得很好
Private Sub Form_Load()
Data = "A"
pass = "B"
enkrip = Chr(Asc(Data) Xor Asc(pass))
dekrip = Chr(Asc(enkrip) Xor Asc(pass))
MsgBox enkrip & vbCrLf & dekrip
End Sub
我应该怎么做才能修复我的代码?
感谢
单步执行代码并检查值,最好在十六进制中检查它们。花点时间了解字符编码和值。 – zaph