VB.net Base64 + 异或
VB.net Base64 + XOR
所以我想做一个函数,可以加密和解密到Base64,然后用密钥对其进行异或。
到目前为止,这是我的代码:
Imports System.Text
Module Module1
Private key As String = "37526"
Sub Main()
Dim test As String = Console.ReadLine
test = Decrypt(test)
Console.WriteLine(test)
Main()
End Sub
Public Function Decrypt(CipherText As String) As String
Dim decoded = Convert.FromBase64String(CipherText)
Dim dexored = [xor](decoded, key)
Return Encoding.UTF8.GetString(dexored)
End Function
Private Function [xor](text As Byte(), key As String) As Byte()
Dim res As Byte() = New Byte(text.Length - 1) {}
For c As Integer = 0 To text.Length - 1
res(c) = CByte((text(c)) Xor CUInt(Val(c Mod key.Length)))
Next
Return res
End Function
Public Function Encrypt(Plaintext As String)
Dim encoded = Encoding.UTF8.GetBytes(Plaintext)
Dim xored = [xor](encoded, key)
Return Convert.ToBase64String(xored)
End Function
End Module
所以这是我的问题:这段代码工作正常,但我正在尝试解密这个字符串 "X1hZXVoCBQY=",该字符串的解密应该是 "lolol123"。不知道是我的代码错了,还是密钥不对。有人可以检查我的代码或给我正确的密钥吗?我试图暴力破解密钥,但这对我来说没有用。如果我尝试解密我没有得到 "lolol123" 的字符串,我会得到“_Y[^^”
xor
函数出错了。尝试在一行中做太多事情会使它变得过于复杂,无法立即看到发生了什么,所以我开始重写它,更多地按照我本来应该做的方式进行,并且在我开始查看任何东西之前快速检查表明它可以正常工作否则:
Option Infer On
Option Strict On
' ...
Private Function [xor](text As Byte(), key As String) As Byte()
Dim res As Byte() = New Byte(text.Length - 1) {}
Dim keyBytes = Encoding.UTF8.GetBytes(key)
For c = 0 To text.Length - 1
res(c) = CByte((text(c)) Xor keyBytes(c Mod keyBytes.Length))
Next
Return res
End Function
所以我想做一个函数,可以加密和解密到Base64,然后用密钥对其进行异或。
到目前为止,这是我的代码:
Imports System.Text
Module Module1
Private key As String = "37526"
Sub Main()
Dim test As String = Console.ReadLine
test = Decrypt(test)
Console.WriteLine(test)
Main()
End Sub
Public Function Decrypt(CipherText As String) As String
Dim decoded = Convert.FromBase64String(CipherText)
Dim dexored = [xor](decoded, key)
Return Encoding.UTF8.GetString(dexored)
End Function
Private Function [xor](text As Byte(), key As String) As Byte()
Dim res As Byte() = New Byte(text.Length - 1) {}
For c As Integer = 0 To text.Length - 1
res(c) = CByte((text(c)) Xor CUInt(Val(c Mod key.Length)))
Next
Return res
End Function
Public Function Encrypt(Plaintext As String)
Dim encoded = Encoding.UTF8.GetBytes(Plaintext)
Dim xored = [xor](encoded, key)
Return Convert.ToBase64String(xored)
End Function
End Module
所以这是我的问题:这段代码工作正常,但我正在尝试解密这个字符串 "X1hZXVoCBQY=",该字符串的解密应该是 "lolol123"。不知道是我的代码错了,还是密钥不对。有人可以检查我的代码或给我正确的密钥吗?我试图暴力破解密钥,但这对我来说没有用。如果我尝试解密我没有得到 "lolol123" 的字符串,我会得到“_Y[^^”
xor
函数出错了。尝试在一行中做太多事情会使它变得过于复杂,无法立即看到发生了什么,所以我开始重写它,更多地按照我本来应该做的方式进行,并且在我开始查看任何东西之前快速检查表明它可以正常工作否则:
Option Infer On
Option Strict On
' ...
Private Function [xor](text As Byte(), key As String) As Byte()
Dim res As Byte() = New Byte(text.Length - 1) {}
Dim keyBytes = Encoding.UTF8.GetBytes(key)
For c = 0 To text.Length - 1
res(c) = CByte((text(c)) Xor keyBytes(c Mod keyBytes.Length))
Next
Return res
End Function