首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Windows-1252错误字符

Java Windows-1252错误字符
EN

Stack Overflow用户
提问于 2014-11-07 11:01:00
回答 1查看 266关注 0票数 0

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

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

代码语言:javascript
复制
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。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-07 11:48:05

您需要将密文转换为基64编码,并在解密前返回到字节。或者你需要继续把密文当作二进制。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26799782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档