我应该使用哪种编码将 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 编码器。
或者您可以下载某人的实现并使用它。
您可以使用十六进制编码,这将使编码后的字符串更大,但它会使用更小的字符集。
我的任务是在 属性 文件中保存加密密码。我有这段代码,它工作正常,但我正在 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 编码器。 或者您可以下载某人的实现并使用它。
您可以使用十六进制编码,这将使编码后的字符串更大,但它会使用更小的字符集。