我应该使用哪种编码将 AES 加密密码保存在 属性 文件中?

Which encoding should I use to save AES encrypted password in property file?

我的任务是在 属性 文件中保存加密密码。我有这段代码,它工作正常,但我正在 Java space 中寻找一些替代方法。有人能给我除 base64 以外的其他正常工作的编码吗?

byte[] key = { '^', '(', 'S', '2', 'k', '*', '*','@', 'z', '/', 'a','#', '\', 'd', 'R', 'G' };
byte[] dataToSend = new String("Hello Bob.").getBytes();
Cipher c;
String s = "";
try {
    c = Cipher.getInstance("AES/ECB/PKCS5Padding");
    SecretKeySpec k = new SecretKeySpec(key, "AES");
    c.init(Cipher.ENCRYPT_MODE, k);
    byte[] encryptedData = c.doFinal(dataToSend);

    s = new BASE64Encoder().encode(encryptedData);
}

Base64 接受任何数据(任何字符集)并将其转换为只有 64 个字符的非常有限的字符集,因此无需担心字符集。

尽管有两种 base64 编码,其中一种是 URL 安全的。 另一个不安全,因为它包含斜线。 如果您担心,可以使用 URL 安全的 base64 编码而不是标准编码。

Apache Commons Codec 提供了一个 URL 安全的 base64 编码器。 或者您可以下载某人的实现并使用它。

您可以使用十六进制编码,这将使编码后的字符串更大,但它会使用更小的字符集。