gpt4 book ai didi

java - Java 程序为 VB 应用程序生成的文件的编码问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:38:03 26 4
gpt4 key购买 nike

我有一个小型Java加密程序,它读取csv并生成加密的csv文件以上传到VB应用程序,但解密后的VB应用程序无法正确显示字符。

我在 Notepad++ 中打开该文件,并在 notepad++ 中将其转换为 UTF-8,VB 应用程序能够解密并显示所有正确的字符。然后我继续修改我的代码以使用 UTF-8 从 csv 中读取行,但我没有工作。我尝试读取文件,将其转换为字节并使用 UTF-8 编码创建一个新字符串,但这也不起作用。为什么当我使用 notepad++ 转换为 UTF-8 时它有效,但当我在代码中尝试转换时却不起作用。

VB函数

//each line from the encrypted file is processed by this VB RC4 function
Private Function RC4(ByVal Str As String, ByVal Pwd As String) As String

Dim strReturnValue As String = ""
Dim Sbox(0 To 255) As Integer
Dim A, B, c
Dim Key() As Byte, ByteArray() As Byte, Tmp As Byte

If Len(Pwd) = 0 Or Len(Str) = 0 Then GoTo Exit_Function
If Len(Pwd) > 256 Then
Key = System.Text.Encoding.Default.GetBytes(Microsoft.VisualBasic.Left(Pwd, 256)) ''StrConv(Left$(Pwd, 256), vbFromUnicode)
Else
Key = System.Text.Encoding.Default.GetBytes(Pwd) ''StrConv(Pwd, vbFromUnicode)
End If

For A = 0 To 255
Sbox(A) = A
Next A
A = 0 : B = 0 : c = 0
For A = 0 To 255
B = (B + Sbox(A) + Key(A Mod Len(Pwd))) Mod 256
Tmp = Sbox(A)
Sbox(A) = Sbox(B)
Sbox(B) = Tmp
Next A
A = 0 : B = 0 : c = 0
ByteArray = System.Text.Encoding.Default.GetBytes(Str) '' StrConv(Str, vbFromUnicode)
For A = 0 To Len(Str) - 1
B = (B + 1) Mod 256
c = (c + Sbox(B)) Mod 256
Tmp = Sbox(B)
Sbox(B) = Sbox(c)
Sbox(c) = Tmp
ByteArray(A) = ByteArray(A) Xor (Sbox((Sbox(B) + Sbox(c)) Mod 256))
Next A
strReturnValue = System.Text.Encoding.Default.GetString(ByteArray) ''StrConv(ByteArray, vbUnicode)
Exit_Function:
Return strReturnValue
End Function

Java

//processing line from the input file and writing to file
try
{
FileOutputStream fos = newFileOutputStream("stackOverFlow\\EncryptedFile.csv",true);
byte [] encrypt = EncryptFile.RC4(line.getBytes(), pwd);
fos.write(encrypt);
fos.close();
}
catch (Exception e1)
{
e1.printStackTrace();
}

最佳答案

反编译 VB 应用程序并阅读下面的帖子后,我找到了解决方案:

Read a file line by line with VB.NET

我更改了 Reader 声明的方式

将阅读器调暗为 StreamReader

将阅读器调暗为新的 StreamReader(filetoimport.Text, Encoding.Default)

关于java - Java 程序为 VB 应用程序生成的文件的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56271633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com