return 行表示 java AES 加密方法是什么?
what is this return line indicates from java AES encryption method?
这是 AES 加密方法的代码块:
public String encrypt(String strToEncrypt) {
try {
setKey(myKey);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
} catch (Exception e) {
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
在这段代码中,我们究竟要返回加密方法什么?这里的这一行表示什么?
Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
首先,加密几乎总是 byte[]
到 byte[]
的事情。因此,如果您希望 输入或输出(或两者)可读 String
值,那么您需要在 [=43] 中进行一些转换=] 在出去的路上。在这种情况下,我们进行双向转换:
strToEncrypt.getBytes("UTF-8")
获取输入 String
strToEncrypt
并使用 UTF-8 编码将其转换为 byte[]
(一个不错的选择,因为它可以表示所有Unicode,普遍 known/compatible 并且相当紧凑)。
- 那么
cipher.doFinal(...)
就是执行实际加密的调用。从 #1 获取输入并返回带有密文的 byte[]
(“文本”具有误导性,因为 byte[]
确实 而不是 代表可读文本,它'会有效地看起来像二进制随机噪声)。
Base64.getEncoder().encodeToString(...)
然后接收 doFinal
返回的 byte[]
并将使用 Base64
对其进行编码以获得表示该二进制数据的可读文本。
所以简而言之:加密一些 String
和 returns 结果的格式 可以 被人类读取,但几乎肯定只能对计算机有意义。
这是 AES 加密方法的代码块:
public String encrypt(String strToEncrypt) {
try {
setKey(myKey);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
} catch (Exception e) {
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
在这段代码中,我们究竟要返回加密方法什么?这里的这一行表示什么?
Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
首先,加密几乎总是 byte[]
到 byte[]
的事情。因此,如果您希望 输入或输出(或两者)可读 String
值,那么您需要在 [=43] 中进行一些转换=] 在出去的路上。在这种情况下,我们进行双向转换:
strToEncrypt.getBytes("UTF-8")
获取输入String
strToEncrypt
并使用 UTF-8 编码将其转换为byte[]
(一个不错的选择,因为它可以表示所有Unicode,普遍 known/compatible 并且相当紧凑)。- 那么
cipher.doFinal(...)
就是执行实际加密的调用。从 #1 获取输入并返回带有密文的byte[]
(“文本”具有误导性,因为byte[]
确实 而不是 代表可读文本,它'会有效地看起来像二进制随机噪声)。 Base64.getEncoder().encodeToString(...)
然后接收doFinal
返回的byte[]
并将使用Base64
对其进行编码以获得表示该二进制数据的可读文本。
所以简而言之:加密一些 String
和 returns 结果的格式 可以 被人类读取,但几乎肯定只能对计算机有意义。