gpt4 book ai didi

java - 使用 Cipher 和 Base64.Encoder 加密字符串时,目标字符集是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:07:56 24 4
gpt4 key购买 nike

我正在尝试在我正在设计的 DSL 中包含加密 token (即我需要一个字符用作分隔符)。 encoder.encodeToString(...) 文档说它使用 ISO-8859-1字符集。但是,当我加密文本样本时,它似乎并没有使用所有 ISO-8859-1 字符集,而是使用大写/小写和一些符号,而不是某些标点符号和重音字符。关于此 encodeToString() 调用,我遗漏了什么?最终的字符域是什么?

//import java.util.Base64;
//import javax.crypto.Cipher;
//import javax.crypto.SecretKey;
static Cipher cipher;
public static String decrypt(String encryptedText, SecretKey secretKey) throws Exception {
Base64.Decoder decoder = Base64.getDecoder();
byte[] encryptedTextByte = decoder.decode(encryptedText);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedByte = cipher.doFinal(encryptedTextByte);
String decryptedText = new String(decryptedByte);
return decryptedText;
}

最佳答案

String 有一个带字符集的构造函数;否则采用默认操作系统字符集。

new String(decryptedByte, StandardCharsets.ISO_8859_1);

由于经常混淆 Latin-1 (ISO-8859-1) 和 Windows Latin-1 (Windows-1252),您也可以试试“Windows-1252”。

关于java - 使用 Cipher 和 Base64.Encoder 加密字符串时,目标字符集是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33126955/

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