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

javascript - 如何使用crypto-js进行AES解密,没有iv密钥偏移量?

谢奕
2023-11-27

AES解密,没有iv怎么使用crypto-js呢

image.png

var CryptoJS = require("crypto-js");// 定义AES加密解密密钥const key = CryptoJS.enc.Utf8.parse('1234567_cpzy1234');// 加密const plaintext = 'admin';const ciphertext = CryptoJS.AES.encrypt(plaintext, key, {  iv: CryptoJS.enc.Utf8.parse('1234567_cpzy1234'), // 初始向量  mode: CryptoJS.mode.CBC, // 模式  padding: CryptoJS.pad.Pkcs7 // 填充}).toString();console.log('加密',ciphertext);// 解密const decrypted = CryptoJS.AES.decrypt(ciphertext, key, {  iv: CryptoJS.enc.Utf8.parse('1234567_cpzy1234'), // 初始向量  mode: CryptoJS.mode.CBC, // 模式  padding: CryptoJS.pad.Pkcs7 // 填充});console.log('解密',decrypted.toString(CryptoJS.enc.Utf8)); 

加密串:'z6OGLxa/UGEjSZXfBiPGsA=='
秘钥:'1234567_cpzy1234'
找了一个在线解密的网站,没设置iv密钥偏移量确实可以解,但是用crypto-js不设置iv就会报错,应该怎么用啊。

共有2个答案

夏侯臻
2023-11-27

首先IV 确实是必须的。至于你没有iv 为什么可以解开,纯属你的密钥 key 和 iv 一样, 你将iv 改成别的, 也就解不开了

司马同
2023-11-27

image.png

你这分组模式一个是 ECB、一个是 CBC,那能对吗?

CBC 一定要 iv,实在就是没有那就填充 16 字节的 0;ECB 不需要 iv。

 类似资料:
  • 我正在尝试将我的应用程序从128位AES密钥升级为256位AES。然而,当我将第54行从128更改为256时,我会得到以下密钥大小错误。 java.security.无效密钥异常: 非法的密钥大小 我已正确安装了JCE文件,我的应用程序生成较长的密钥这一事实证明了这一点。 我在其他文章中看到过“AES / CBC / PKCS7Padding”加密方法,但这只会让我遇到这个例外:

  • 使用EVP_BytesToKey()返回错误的key和iv可能出了什么问题? 我试过用iter计数值做实验,但似乎没有一个能产生工作键和IV。我假设命令行默认的iter计数是1。 同样确认的是,如果我用命令行显示的工作键和iv覆盖从EVP_BytesToKey()返回的内容和硬代码无符号char数组,我的其余代码工作正常,解密正确。 有人能帮忙吗?

  • 我已经看到了其他一些关于创建加密的初始化向量(IV)的问题,似乎使用随机值是一种选择。然而,我需要生成用于解密的IV,所以我必须使用基于一些salt的数据加密的相同的数据。 node.js加密函数createDecipher表示: crypto.createdecipher()的实现使用OpenSSL函数EVP_BytesToKey派生密钥,摘要算法设置为MD5,一次迭代,没有salt。 好的,听

  • 我目前需要一种使用AES-128对称加密对字符串加密和字节数组解密的方法,使用C#。我找不到办法,但也许我错过了什么。

  • 问题内容: 我之所以写这个问题+答案,是因为我挣扎了很多(也许是因为缺乏经验),并迷失了使用node或python进行加密/解密的许多不同方式。 我以为我的案子将来可以帮助人们。 我需要做的是: 从表单获取数据,使用Crypto(node-js)对其进行加密 在Python中传递加密的数据,然后使用PyCrypto将其解密。 我选择使用AES加密。 这是我的开始方式(我不会尝试的所有事情): 我遵

  • 问题内容: 我想生成rsa密钥对(公共和私有),然后将它们用于AES加密和解密。例如,用于加密的公共密钥和用于解密的私有密钥。我为此编写了一个简单的代码,但是问题是当我运行时这段代码我得到这个错误: 我该如何解决这个问题?我的加密代码如下: 问题答案: 如评论中所建议,我搜索了“混合密码术”。这个例子解决了我的问题。