- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我一直在 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/
我处理来自 AVFrame.data 的原始数据。此帧的像素格式为 AV_PIX_FMT_YUV420P。我想了解此数据位于哪个值范围内。 似乎 UV(在 YUV 方案中)必须在 [-128, 128
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 去年关闭。 Improve this questio
Google Web Toolkits (GWT) RPC 调用的数据格式如何以及 IsSerializable 对象如何传输。我知道 Java Serializable 传输某种二进制格式,但是 G
我打算建立一个简单的音频接口(interface)。为此,我只想知道 ASIO 驱动程序通常以哪种格式将数据传递给程序?我无法从规范中找出这一点,也无法在其他地方找到它。我不想编写自己的驱动程序,我只
我正在编写一个平滑流客户端应用程序。在服务器端(带有Media Services扩展的IIS 7)上,我有一堆ISMV和ISMA文件,这些文件是使用Expression Encoder pro 4预先
我使用 JSON.stringify 和 JQuery.ajax() 将以下 JSON 对象从 .jsp 页面传递到 java servlet: {"bin":[{"binId":"0","binDe
我有一些来自 VLM telnet 服务的数据: show media : ( 1 broadcast - 0 vod ) cam1 type : br
我们正在导出公钥和私钥。私钥将由用 Magic 编写的非 .net 软件使用。开发人员对导出 key 的格式有疑问。是否有白皮书或其他资源来解释导出数据的格式? 最佳答案 关于导出的 blob 类型的
如何在 Altair 中创建多线图? 特别是,我有一个 pandas 数据框,如下所示: Commit Author Date Week Adds
我的数据格式类似于此示例中使用的 flare.json: 我只是想知道 d3 可缩放图表使用什么函数 来获取这种格式的数据 在 flare.json 中是这样的 { name: "stuff",
我正在尝试创建一些 JSON 用于使用 Highcharts 显示图表 http://www.highcharts.com/ 我复制了他们的一个例子: http://www.highcharts.co
我被要求编写一个读取 BSDF data format defined by Zemax 的函数此类文件的示例可在以下页面找到:BSDF file example 如果可能的话,我想只使用标准的 if
我为 CoreML 将 UIImage 转换为 CVPixelBuffer,但我想更改 RGB 像素,如 R/1.5、G/2、B/2.5。 我可以使用assumingMemoryBound(to :
我正在开发一个项目,我想展示网站中的各种文件如何相互交互。我认为使用 D3 这将是一个相当简单的任务,但现在我想知道我的 json 数据是如何排列的。这是我的数据示例: { "pages" : [{
我正在使用 Apache POI 构建一些 Excel 文件,我想确保某些单元格的类型为“Number”。 我尝试了以下方法: style.setDataFormat(HSSFDataForm
我有一些具有小数属性的实体。这些实体的属性显示在我整个 UI 的多个位置。 目前我发现自己在做: litWeight.Text = person.Weight.ToString("0.00"); 无处
首先介绍三个注解: @JsonAutoDetect (method/field):作用于方法或字段,用来表明,当生成json的时候忽略有该annotation的方法或字段 @JsonIgnore 过滤
我是 Azure 的新手,一直在使用 Azure Monitor 和 AZ Sentinel 进行日志记录和分析部分。我的审核日志从 AZ VM 中托管的第三方供应商安全设备流向 Syslog VM。
我有一些代码,例如: CellStyle cs2 = wb.createCellStyle(); CellStyle cs4 = wb.createCellStyle(); cs4.setDataFo
我正在尝试提取 YourKit 的“线程” View 中显示的数据(关于线程状态;主要是当每个线程“等待”或“可运行”时)。我已使用命令行导出实用程序为其支持的所有 View 生成所有格式。 导出目录
我是一名优秀的程序员,十分优秀!