当前位置: 首页 > 知识库问答 >
问题:

错误:不支持状态或无法对数据进行身份验证

养昊天
2023-03-14

我通过运行以下代码得到下面的错误。

错误:decipheriv.final(node:internal/crypto/cipher:196:29)在decrypt(/users/username/dev/playground/node/src/index.ts:14:65)处处于不支持状态或无法对数据进行身份验证

import crypto from "crypto";

const key = "13312156329479471107309870982123";

const encrypt = (message: string): string => {
  const iv = crypto.randomBytes(16);
  const cipher = crypto.createCipheriv("aes-256-gcm", key, iv);
  return `${cipher.update(message, "utf-8", "hex")}${cipher.final("hex")}`;
};

const decrypt = (message: string): string => {
  const iv = crypto.randomBytes(16);
  const decipher = crypto.createDecipheriv("aes-256-gcm", key, iv);
  return `${decipher.update(message, "hex", "utf-8")}${decipher.final(
    "utf-8"
  )}`;
};

console.log(decrypt(encrypt("hello")));
  • 节点中aes-128-gcm的“不支持状态或无法验证数据”
  • 在nodejs解密中获取错误(错误:不支持的状态或无法验证数据)

但我不认为我会因为同样的原因得到同样的错误。如有任何帮助,不胜感激。谢谢

共有1个答案

东云
2023-03-14

IV对密码和破译都需要通用。应该读一下文件的

const key = crypto.randomBytes(32);
const iv = crypto.randomBytes(16);

const encrypt = (message: string): string => {
  const cipher = crypto.createCipheriv("aes-256-cbc", key, iv);
  return `${cipher.update(message, "utf-8", "hex")}${cipher.final("hex")}`;
};

const decrypt = (message: string): string => {
  const decipher = crypto.createDecipheriv("aes-256-cbc", key, iv);
  return `${decipher.update(message, "hex", "utf-8")}${decipher.final(
    "utf-8"
  )}`;
};
 类似资料:
  • 当我尝试使用PHP SMTP电子邮件服务器发送电子邮件时,发生了以下错误。 邮件程序错误:SMTP错误:无法进行身份验证。 下面是我使用的代码。 } 如何修复此错误。

  • 我试图使用节点加密提供的aes-128-gcm实现加密/解密功能。根据我的理解,gcm对密文进行加密,但也对其进行散列,并将其作为“身份验证标记”提供。但是,我不断得到错误:“不支持状态或无法对数据进行身份验证”。 我不确定这是否是我的代码中的错误--查看加密的密文和auth标记,由decrypt函数提取的密文和由encrypt函数产生的密文是相同的。 错误是由decipher.final()抛出

  • null 一些重要注意事项: 我们有传输安全性(HTTPS及其最好的朋友); 在窗帘后面,web应用程序代表当前用户将大量操作委托给外部服务(这些系统确实将Bob识别为其用户之一)--这意味着我们必须将Bob的凭据转发给它们。 现在,我们如何(在每个请求上)对Bob进行身份验证?哪一种方法会是实施这样的事情的合理方法呢? null null 非常感谢您花时间阅读以下内容:)

  • 我能够使用HTTPS设置在本地环境上运行laravel echo服务器。但是,我的生产服务器(基于Forge)似乎存在一个问题: 我能够通过HTTPS在本地测试私有通道,它工作得很好,所以看起来不存在配置问题。 我应该提到的是,我使用的是LaravelPassport,导致此错误的请求被抛出到常规身份验证中间件之外的页面上。 为了确保它不是我的身份验证方法,我让它在我的通道配置中返回“true”:

  • 我已经安装了Laravel回声服务器和Laravel回声客户端。 以下是laravel echo服务器。json配置。 以下脚本侦听通道事件。它可以通过很好地构建。 尝试侦听命令上的任何事件时。它不断抛出。 注: 我在laravel echo服务和谷歌上都没有发现任何有用的东西。 任何帮助将不胜感激。 拉威尔V5。4. 谢谢