AES 加密解密错误:'ERR_OSSL_EVP_WRONG_FINAL_BLOCK_LENGTH'

问题描述 投票:0回答:1

我正在尝试使用存储在 env 函数中的密钥和 iv 解密来自 mongodb 的数据以检索数据,但我收到此错误:

ERR_OSSL_EVP_WRONG_FINAL_BLOCK_LENGTH

app.get("/recieve", async(req, res) => {
  try {
    const data = await UploadData.find();

    const decryptedData = data.map((item) => {
      const decryptedFullName = decryptData(item.fullname, secretKey);
      const decryptedCatName = decryptData(item.catName, secretKey);
      const decryptedEmail = decryptData(item.email, secretKey);
      const decryptedContact = decryptData(item.contact, secretKey);
      const decryptedLocation = decryptData(item.location, secretKey);

      return {
        ...item.toObject(),
        fullname: decryptedFullName,
        catName: decryptedCatName,
        email: decryptedEmail,
        contact: decryptedContact,
        location: decryptedLocation,
      };
    });
    res.json(decryptedData);
  } catch (error) {
    console.error("Error fetching data:", error);
    res.status(500).json({
      error: "Internal server error"
    });
  }
});

解密数据功能:

function decryptData(encryptedData, key) {
  try {
    const buff = Buffer.from(encryptedData, "base64");
    encryptedData = buff.toString("utf-8");
    var decipher = crypto.createDecipheriv("aes-256-cbc", key, iv);
    return (
      decipher.update(encryptedData, "base64", "utf8") +
      decipher.final("utf8")
    );
  } catch (error) {
    console.log("Error decrypting data:", error);
    return null;
  }
}

数据是这样加密的:

function encryptData(data, key, iv) {
  const keyBuffer = Buffer.from(key, "hex");
  const cipher = crypto.createCipheriv("aes-256-cbc", keyBuffer, iv);

  let encryptedData = cipher.update(data, "utf8", "base64") + cipher.final("base64");
  return encryptedData;
}
javascript node.js mongodb express aes
1个回答
0
投票

如果我没记错的话,该错误意味着它期望填充最后一个块,但事实并非如此

© www.soinside.com 2019 - 2024. All rights reserved.