将RC4从c#转换为vb
我不得不将RC4代码从c#转换成vb 我试着在网上获取已经制作好的代码,但它们似乎不像我现在拥有的c#代码那样有效。 我对VB很陌生,所以这对我来说很难。也许专业人士会看到我犯的错误。这两种代码给出不同的加密结果 c#代码:将RC4从c#转换为vb,c#,vb.net,encryption,C#,Vb.net,Encryption,我不得不将RC4代码从c#转换成vb 我试着在网上获取已经制作好的代码,但它们似乎不像我现在拥有的c#代码那样有效。 我对VB很陌生,所以这对我来说很难。也许专业人士会看到我犯的错误。这两种代码给出不同的加密结果 c#代码: 公共静态字符串RC4(字符串pStrMessage,字符串pStrKey) { char[]lbytasciary; int[]二进制; 国际lLngIndex// int-lBytJump; 煤焦温度; 智力低下; 国际lLngT; int lLngX; int lLng
公共静态字符串RC4(字符串pStrMessage,字符串pStrKey)
{
char[]lbytasciary;
int[]二进制;
国际lLngIndex//
int-lBytJump;
煤焦温度;
智力低下;
国际lLngT;
int lLngX;
int lLngKeyLength//
字符串加密;//加密的消息
lLngKeyLength=pStrKey.Length;
如果(lLngKeyLength<1)
返回字符串。空;
if(pStrMessage.Length<1)
返回字符串。空;
lbytasciary=新字符[256];
lBytKeyAry=新整数[256];
对于(lLngIndex=0;lLngIndex<256;lLngIndex++)
{
lBytKeyAry[lLngIndex]=pStrKey[(lLngIndex%llngkeyelength)];
}
对于(lLngIndex=0;lLngIndex<256;lLngIndex++)
{
lbytasciariary[lLngIndex]=转换为字符串(lLngIndex);
}
lBytJump=0;
对于(lLngIndex=0;lLngIndex<256;lLngIndex++)
{
lBytJump=(lBytJump+lbytasciary[lLngIndex]+lBytKeyAry[lLngIndex])%256;
lBytTemp=lbytasciariary[lLngIndex];
lbytasciary[lLngIndex]=lbytasciary[lBytJump];
lbytasciary[lBytJump]=转换为字符串(lBytTemp);
}
lLngIndex=0;
lBytJump=0;
加密=”;
对于(lLngX=0;lLngX
我的VB翻译:
Public Function RC4(ByVal pStrMessage As String, ByVal pStrKey As String) As String
Dim lBytAsciiAry(0 To 256) As Char
Dim lBytKeyAry(0 To 256) As Integer
Dim lLngIndex As Integer
Dim lBytJump As Integer
Dim lBytTemp As Char
Dim lBytY As Integer
Dim lLngT As Integer
Dim lLngX As Integer
Dim lLngKeyLength As Integer
Dim encrypt As String
lLngKeyLength = pStrKey.Length
If lLngKeyLength < 1 Then
Return String.Empty
End If
If pStrMessage.Length < 1 Then
Return String.Empty
End If
For lLngIndex = 0 To 255
lBytKeyAry(lLngIndex) = Val(pStrKey((lLngIndex Mod lLngKeyLength)))
Next
For lLngIndex = 0 To 255
lBytAsciiAry(lLngIndex) = Convert.ToChar(lLngIndex)
Next
lBytJump = 0
For lLngIndex = 0 To 255
lBytJump = (lBytJump + Asc(lBytAsciiAry(lLngIndex)) + lBytKeyAry(lLngIndex)) Mod 256
lBytTemp = lBytAsciiAry(lLngIndex)
lBytAsciiAry(lLngIndex) = lBytAsciiAry(lBytJump)
lBytAsciiAry(lBytJump) = Convert.ToChar(lBytTemp)
Next
lLngIndex = 0
lBytJump = 0
encrypt = ""
For lLngX = 0 To pStrMessage.Length - 1
lLngIndex = (lLngIndex + 1) Mod 256
lBytJump = (lBytJump + Asc(lBytAsciiAry(lLngIndex))) Mod 256
lLngT = Asc(lBytAsciiAry(lLngIndex) + lBytAsciiAry(lBytJump)) Mod 256
lBytTemp = lBytAsciiAry(lLngIndex)
lBytAsciiAry(lLngIndex) = lBytAsciiAry(lBytJump)
lBytAsciiAry(lBytJump) = lBytTemp
lBytY = Asc(lBytAsciiAry(lLngT))
encrypt = encrypt + Convert.ToChar(Asc(pStrMessage(lLngX)) Xor lBytY)
Next
Return encrypt
End Function
公共函数RC4(ByVal pStrMessage作为字符串,ByVal pStrKey作为字符串)作为字符串
将lbytasciariary(0到256)设置为字符
Dim LBYTYKEYARY(0到256)作为整数
Dim lLngIndex为整数
作为整数的Dim-lBytJump
Dim lBytTemp作为字符
作为整数的Dim lBytY
作为整数的Dim lLngT
作为整数的Dim lLngX
Dim lLngKeyLength为整数
加密为字符串
lLngKeyLength=pStrKey.Length
如果lLngKeyLength<1,则
返回字符串。空
如果结束
如果PSTR消息长度小于1,则
返回字符串。空
如果结束
对于lLngIndex=0到255
lBytKeyAry(lLngIndex)=Val(pStrKey((lLngIndex Mod llngkeyelength)))
下一个
对于lLngIndex=0到255
lbytasciariary(lLngIndex)=转换为char(lLngIndex)
下一个
lBytJump=0
对于lLngIndex=0到255
lBytJump=(lBytJump+Asc(lbytasciariary(lLngIndex))+lBytKeyAry(lLngIndex))Mod 256
lBytTemp=lbytasciariary(lLngIndex)
lbytasciariary(lLngIndex)=lbytasciariary(lBytJump)
lbytasciary(lBytJump)=转换为字符串(lBytTemp)
下一个
lLngIndex=0
lBytJump=0
encrypt=“”
对于lLngX=0到PSTR消息长度-1
lLngIndex=(lLngIndex+1)模块256
lBytJump=(lBytJump+Asc(lbytasciariary(lLngIndex)))Mod 256
lLngT=Asc(lbytasciary(lLngIndex)+lbytasciary(lBytJump))Mod 256
lBytTemp=lbytasciariary(lLngIndex)
lbytasciariary(lLngIndex)=lbytasciariary(lBytJump)
lbytasciary(lBytJump)=lBytTemp
lBytY=Asc(LBYTASCIARY(lLngT))
encrypt=encrypt+Convert.ToChar(Asc(pStrMessage(lLngX))Xor lBytY)
下一个
返回加密
端函数
尝试使用此C#到VB转换器查看是否获得所需的结果尝试使用此C#到VB转换器查看是否获得所需的结果我以前使用过它,它还加密了另一个东西。他们两人都指出的问题是,在c#中可以向整数添加ascii字符,但在vb中不能。不管怎样,我现在已经修正了密码。问题是字符转换。我没有使用Char来强制转换它,而是尝试了Convert.toChar。无论如何谢谢你:)我以前用过这个,它也加密了另一个东西。他们两人都指出的问题是,在c#中可以向整数添加ascii字符,但在vb中不能。不管怎样,我现在已经修正了密码。问题是字符转换。我没有使用Char来强制转换它,而是尝试了Convert.toChar。无论如何谢谢你:)
Public Function RC4(ByVal pStrMessage As String, ByVal pStrKey As String) As String
Dim lBytAsciiAry(0 To 256) As Char
Dim lBytKeyAry(0 To 256) As Integer
Dim lLngIndex As Integer
Dim lBytJump As Integer
Dim lBytTemp As Char
Dim lBytY As Integer
Dim lLngT As Integer
Dim lLngX As Integer
Dim lLngKeyLength As Integer
Dim encrypt As String
lLngKeyLength = pStrKey.Length
If lLngKeyLength < 1 Then
Return String.Empty
End If
If pStrMessage.Length < 1 Then
Return String.Empty
End If
For lLngIndex = 0 To 255
lBytKeyAry(lLngIndex) = Val(pStrKey((lLngIndex Mod lLngKeyLength)))
Next
For lLngIndex = 0 To 255
lBytAsciiAry(lLngIndex) = Convert.ToChar(lLngIndex)
Next
lBytJump = 0
For lLngIndex = 0 To 255
lBytJump = (lBytJump + Asc(lBytAsciiAry(lLngIndex)) + lBytKeyAry(lLngIndex)) Mod 256
lBytTemp = lBytAsciiAry(lLngIndex)
lBytAsciiAry(lLngIndex) = lBytAsciiAry(lBytJump)
lBytAsciiAry(lBytJump) = Convert.ToChar(lBytTemp)
Next
lLngIndex = 0
lBytJump = 0
encrypt = ""
For lLngX = 0 To pStrMessage.Length - 1
lLngIndex = (lLngIndex + 1) Mod 256
lBytJump = (lBytJump + Asc(lBytAsciiAry(lLngIndex))) Mod 256
lLngT = Asc(lBytAsciiAry(lLngIndex) + lBytAsciiAry(lBytJump)) Mod 256
lBytTemp = lBytAsciiAry(lLngIndex)
lBytAsciiAry(lLngIndex) = lBytAsciiAry(lBytJump)
lBytAsciiAry(lBytJump) = lBytTemp
lBytY = Asc(lBytAsciiAry(lLngT))
encrypt = encrypt + Convert.ToChar(Asc(pStrMessage(lLngX)) Xor lBytY)
Next
Return encrypt
End Function