gpt4 book ai didi

ios - 解密 AES-256-CBC 字符串(需要 IV、字符串/数据格式?)

转载 作者:搜寻专家 更新时间:2023-11-01 07:27:49 25 4
gpt4 key购买 nike

我一直在 Apple 的 CCCrypto 文档、框架和其他 SO 答案中兜圈子,但没有取得任何进展。

认为我需要弄清楚如何从我收到的加密字符串中获取 IV。

我收到一个包含字符串的 JSON 负载。该字符串在 AES-256-CBC 中加密。 (来 self 认为使用 OpenSSL 的 Laravel PHP 实例)。解密后的字符串本身是另一个 JSON 对象。

我有一个预定义的 key 。

我收到的字符串类似于:

eJahdkawWKajashwlkwAkajsne8ehAhdhsiwkdkdhwNIEhHEheLlwhwlLLLLhshnNWhwhabwiIWHWHwh=

(但要长得多)。

我在这里尝试使用这个答案:Issue using CCCrypt (CommonCrypt) in Swift

但是我 a) 不确定我是否正确地将字符串转换为数据,以及 b) 如何从我收到的字符串中获取 IV(初始化向量)。

使用该答案我确实获得了“成功”,但是当我尝试将它传递给 NSJSONSerailizer 时,我从来没有得到好的结果(它总是失败)但我确实得到了数据——我认为这是垃圾。

编辑:

我真的误解了我最初的问题 - 我收到了一个 base64 编码的字符串,我需要将其解码为 JSON(一切顺利)。然后使用链接的答案并导入 CommonCrypto 我认为我能够获得可用数据,但我没有。 @Rob Napier 的回答非常有帮助。我认为我的问题是有问题的 laravel 实例正在使用 OpenSSL。

最佳答案

AES 加密数据并没有真正常用的标准格式(有几种“标准格式”,但它们并不常用......)要知道你的数据是如何加密的唯一方法是看在数据格式的文档中,否则,加密代码本身。

在良好的加密格式中,IV 与数据一起发送。但是在许多常见的(不安全的)格式中,有一个硬编码的 IV(有时是 16 个字节的 0x00)。如果有密码,您还需要了解他们是如何将密码转换为 key 的(有几种方法可以做到这一点,有些好,有些则很糟糕)。在一个好的格式中, key 派生可能包括一些您需要从数据中提取的随机“盐”。您还需要知道是否有 HMAC 或类似的身份验证(可能存储在数据的开头或结尾,并且可能包含它自己的盐)。

如果没有发件人的文件,就没有任何好的方法可以知道。任何适当加密的格式看起来都像是随机噪声,因此仅通过查看最终消息就很难弄清楚。

如果这来自 Laravel 的 encrypt 函数,那么最终似乎是 this code :

public function encrypt($value)
{
$iv = mcrypt_create_iv($this->getIvSize(), $this->getRandomizer());
$value = base64_encode($this->padAndMcrypt($value, $iv));
// Once we have the encrypted value we will go ahead base64_encode the input
// vector and create the MAC for the encrypted value so we can verify its
// authenticity. Then, we'll JSON encode the data in a "payload" array.
$mac = $this->hash($iv = base64_encode($iv), $value);
return base64_encode(json_encode(compact('iv', 'value', 'mac')));
}

如果这是正确的,那么您应该已经传递了包含三个字段的 base64 编码的 JSON:IV (iv)、密文 (value),以及什么看起来像是使用与明文 (mac) 相同的 key 加密的 HMAC。您在上面提供的数据看起来根本不像 JSON(即使在 base-64 解码之后)。

不过,这假定调用者使用了此 encrypt 函数。不过,有很多很多方法可以加密,因此您需要知道与您通话的实际服务器是如何进行加密的。

关于ios - 解密 AES-256-CBC 字符串(需要 IV、字符串/数据格式?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34819088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com