- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
当使用 CryptoJS.AES.encrypt
时,如果第三个参数没有传递给函数,它如何产生一个初始化向量?有没有办法把它从加密的字符串中取出来?
我需要这个的原因是我需要解密使用 Lua 返回的 CryptoJS.AES.encrypt
内容,但我只有提供的 key 。
最佳答案
CryptoJS' CryptoJS.<BlockCipher>.encrypt
有两种加密模式。
如果您传入的 key 不是字符串,而是 WordArray(CryptoJS 的二进制数据内部表示格式),则该 key 将按原样使用。此模式需要一个 IV 用于除 ECB 之外的所有操作模式,ECB 不使用 IV,因此您不必指定一个。如果没有传递 IV,它将默认(通过一些 JavaScript 魔法)为零填充 IV(由 0x00 字节的完整 block 组成)。
如果您传入一个是字符串的“ key ”,它会假定“ key ”是密码。为了从密码中派生 key ,它使用与 OpenSSL 兼容的派生函数 EVP_BytesToKey
.此模式生成一个新的 8 字节随机盐并将其与密码一起用于生成 key 和 IV。即使您显式传入 IV,它也不会被使用。
CryptoJS.AES.encrypt(msg, password).toString()
生成 Base64 编码的密文,其开头包含字符串“Salted__”,后跟 8 字节盐和实际密文。您可以在使用前明确拆分它:
var ct = CryptoJS.AES.encrypt(msg, password);
var saltHex = ct.salt.toString(); // random salt
var ctHex = ct.ciphertext.toString(); // actual ciphertext
var ivHex = ct.iv.toString(); // generated IV
如果您需要重新创建相同的 key 派生。看看the code和 the specification .
key 应该具有高熵并且与随机噪声无法区分,这使得它们很难被暴力破解。上面提到的EVP_BytesToKey
不安全,因为 MD5 散列非常快,这使攻击者能够暴力破解密码。您要么需要使用非常长的密码(20-30 个字符),要么使用适当的 key 派生函数,例如 CryptoJS 提供的 PBKDF2。
关于javascript - 当没有指定时,CryptoJS 如何获得 IV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35472396/
题目地址:https://leetcode-cn.com/problems/course-schedule-iv/ 题目描述 你总共需要上 n 门课,课程编号依次为 0 到 n-1 。 有的课会
我即将使用以下脚本来加密和解密一些数据。我正在使用它,因为我当前的加密在我们的新服务器上不起作用。我们目前正在使用 mcrypt,所以我想更改为 openssl。 在我们的数据库中,我们使用 aes
有人可以告诉我为什么会收到此错误消息吗?显然这是我缺少的某种转换 预期 IV 长度为 16 但实际为 24 我用它来调用它 String encrypted = "E5ADDEB05D9D7B3925
这是我用来加密/解密数据的代码: // Set the method $method = 'AES-128-CBC'; // Set the encryption key $encryption_ke
1.题目 给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意:你
已关闭。这个问题是 not about programming or software development 。目前不接受答案。 这个问题似乎不是关于 a specific programming
在 AES 中,我的理解是盐是使密码更安全的东西,它不会被添加到加密文本中。但是IV是用来加密第一个消息 block 的东西,将被添加到加密文本中。 我有什么问题吗? 最佳答案 AES 本身并不直接使
我需要编写一个简化的加密 API,它可以通过使用随机生成的 key 或密码派生的 key 轻松处理对称加密。 密码生成是使用 OpenSSL 库中的 PKCS5_PBKDF2_HMAC() 函数并使用
我正在 Java 中使用 AES/CTR/NoPadding 使用恒定 key 和随机 IV 来加密我的消息。 我计划将 IV 添加到密文前面,然后对其进行 Base64 编码。 现在有一个问题困扰着
如果在加密明文时使用随机IV,那么密文的接收者如何知道IV是什么以对其进行解密? 这是对上一个关于 IVs here. 的 stackoverflow 问题的回复的后续问题 The IV allows
我“到处”都找过了,但找不到。是否有示例说明如何使用 c++ Quantlib 来对具有合成行使价/到期日的期权价格进行插值? 例如,如果“今天”是 2017 年 2 月 6 日,我得到了 2017
当我尝试为 TripleDES 加密器创建 IV 初始化向量时出现以下错误。 请看代码示例: TripleDESCryptoServiceProvider tripDES = new TripleDE
我无法理解以下句子:“初始化向量 (IV) 中的数字全为零(不是 ASCII 字符‘0’)。 我的目标是使用 openssl enc 命令使用 aes-128-cbc 和 key K(比如 12345
我正在阅读有关如何对 key 加盐以确保加密安全的教程,但没能充分理解它。我对密码学了解不多,需要一些帮助。我正在使用 commoncrypto 来加密文件,并且已经完成,除了它不安全这一事实....
我正在尝试创建dBase文件,因为似乎我的Export vba代码中的.TransferDatabase()方法要求该文件存在(请继续获取“字段将不适合记录”。假设由于文件不存在)。 我在网上使用vb
是否建议我使用 initialization vector加密/解密我的数据?它会让事情变得更安全吗?这是需要根据具体情况进行评估的事情之一吗? 为了将其放入实际上下文中,Win32 加密函数 Cry
我可以知道一个 R 包和代码,用于通过可用的诊断测试(例如,弱仪器测试、外生性测试(使用 Wu-Hausman)、Sargan 测试)运行固定效应工具变量 (IV) 回归吗? 我知道 plm 代码提供
我可以知道一个 R 包和代码,用于通过可用的诊断测试(例如,弱仪器测试、外生性测试(使用 Wu-Hausman)、Sargan 测试)运行固定效应工具变量 (IV) 回归吗? 我知道 plm 代码提供
我试图在加密后但写入之前将一个 16 字节安全生成的 IV 附加到每个文件上。这样我以后就可以通过从文件中拉出 IV 来解密它。这是我到目前为止的代码: public static void encr
了解 PKCS5_PBKDF2_HMAC()需要一个salt 并返回一个derivedKey 还有那个GCM::Encryption.SetKeyWithIV()需要 iv(以及 derivedKey
我是一名优秀的程序员,十分优秀!