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] 中进行一些转换=] 在出去的路上。在这种情况下,我们进行双向转换:

  1. strToEncrypt.getBytes("UTF-8") 获取输入 String strToEncrypt 并使用 UTF-8 编码将其转换为 byte[](一个不错的选择,因为它可以表示所有Unicode,普遍 known/compatible 并且相当紧凑)。
  2. 那么cipher.doFinal(...)就是执行实际加密的调用。从 #1 获取输入并返回带有密文的 byte[] (“文本”具有误导性,因为 byte[] 确实 而不是 代表可读文本,它'会有效地看起来像二进制随机噪声)。
  3. Base64.getEncoder().encodeToString(...) 然后接收 doFinal 返回的 byte[] 并将使用 Base64 对其进行编码以获得表示该二进制数据的可读文本。

所以简而言之:加密一些 String 和 returns 结果的格式 可以 被人类读取,但几乎肯定只能对计算机有意义。