gpt4 book ai didi

PHP iOS AES 加密

转载 作者:可可西里 更新时间:2023-11-01 03:32:34 25 4
gpt4 key购买 nike

我一直在尝试使用 AES 加密在 PHP 和我的 iOS 应用程序之间进行通信时遇到问题。

到目前为止,我考虑了两种实现方法。第一个是使用 OpenSSL。
在 iOS 端,我以一种模仿此处显示的代码的方式实现:http://saju.net.in/code/misc/openssl_aes.c.txt .

在 PHP 方面,我获取了生成的 key 和 IV(来自 iPhone)并将其用作 PHP openssl 加密的输入。

结果在输出方面有所不同......

我也考虑过:http://iphonedevelopment.blogspot.com/2009/02/strong-encryption-for-cocoa-cocoa-touch.html

但是这个 SO 帖子:AESCrypt decryption between iOS and PHP阻止了我。

该项目与 AES 无关,它看起来像是一种不会太难实现的强大加密算法。

我的基本问题是:实现可轻松用于 iOS 和 PHP 之间通信的良好加密算法的最简单方法是什么?

最佳答案

我刚刚完成了同样的项目。我使用了您在“还考虑...”中引用的库

下面是一些用 php 解密的示例代码:

$iv2 = '';
for($i=0;$i<16;$i++){
$iv2 .= "\0";
}
$plain_text_CBC = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted_text, MCRYPT_MODE_CBC, $iv2);
var_dump($plain_text_CBC);

确保您的 key 都是 256 位(32 个字符,我还没有遇到任何编码问题,但如果您这样做,请记住您是在加密字节,而不是字符)。请注意,MCRYPT_RIJNDAEL_128 中的 128 是 block 大小而不是 key 大小,而在方法 AES256DecryptWithKey 中,256 是对 key 大小的引用,而 block 大小为 128。AES256DecryptWithKey 以 CBC 模式运行,但具有空初始化向量( iv).

CBC 意味着每个 block 都依赖于最后一个 block ,因此它使用一个预先设置的、通常是随机的、称为 IV 的“ block -1”

ECB 意味着每个 block 都以相同的方式加密,因此它可以揭示同一消息中的两个 block 何时相同。提到的库没有使用它,所以我提到它只是为了对比。

使用零 iv(0000000000000000 字节)被认为是不安全的。要解决此问题,您必须为 IV 创建一个 NSData *iv 变量,并修改 NSData+AESCrypt.m 的 CCcrypt 参数,为 iv 参数添加 [iv bytes](我尚未测试此代码),然后您会需要存储此 iv 并将其与您的消息一起传递给 php。但首先我会测试并让一切都在零 iv 下工作。

关于PHP iOS AES 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8438040/

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