【问题标题】:Which encoding should I use to save AES encrypted password in property file? [closed]我应该使用哪种编码将 AES 加密密码保存在属性文件中? [关闭]
【发布时间】:2015-02-05 17:01:10
【问题描述】:

我的任务是将加密密码保存在属性文件中。我有这段代码,它工作正常,但我正在寻找 Java 空间中的一些替代方案。除了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 的填充字符是否会产生一些问题或者这是别的什么?请让您的问题更清楚。
  • Alternative to Base64 encoding 的可能重复项
  • Base64 不会造成任何问题。我之所以问,是因为我想知道 Java 中是否存在一些替代方案,例如 UTF-8UTF-16 在这种情况下不合适。

标签: java encryption encoding base64 decoding


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 2015-09-10
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2011-03-02
    相关资源
    最近更新 更多