gpt4 book ai didi

Java Windows-1252 错误字符

转载 作者:行者123 更新时间:2023-12-02 05:17:28 25 4
gpt4 key购买 nike

我正在编写 RSA 算法来加密要发送到 VisualBasic Web 服务的字符串。不幸的是,VB RSAcryptoserviceprovider 总是给我一个异常“坏数据”,而问题是编码。VisualBasic 代码接收字符串并使用 windows-1252 编码将其转换为字节数组,然后对其进行解密。

在我的 Java 代码中,我使用以下方法进行加密:

private static String encryptBlock(Cipher cipher, String textToEncrypt) {
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
String encrypted = new String(cipher.doFinal(textToEncrypt.getBytes(Charset.defaultCharset())), "windows-1252");
return encrypted;
}

当我“system.out.print”加密字符串时,它给了我一些奇怪的字符,比如 �。这是否意味着我的 windows-1252 编码是错误的?我在这里做错了什么?请注意,我只能更改 Java 代码,而不能更改 VB。

谢谢!

最佳答案

您需要将密文转换为 Base 64 编码,然后再解密之前转换回字节。要么这样,要么您需要继续将密文视为二进制。

没有任何字符编码会使用每个可能的随机字节值作为可打印字符。因此,像现在这样仅使用默认字符编码将导致数据丢失。

当数据丢失时,您将收到一个异常,指示密文的大小不正确,或者 RSA 加密中使用的填充无效。

关于Java Windows-1252 错误字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26799782/

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