PHP iOS AES 加密

2023-11-23

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

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

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

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

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

但是这个帖子:iOS 和 PHP 之间的 AESCrypt 解密阻止了我。

该项目并不依赖于 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);

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP iOS AES 加密 的相关文章

  • 如何在javascript中使用自动递增id?

  • 在 Android 中使用 AES 加密的最佳实践是什么?

    我为什么问这个问题 我知道人们对 AES 加密存在很多疑问 即使对于 Android 也是如此 如果您在网络上搜索 会发现很多代码片段 但在每个页面上 在每个 Stack Overflow 问题中 我都发现了另一个具有重大差异的实现 所以我
  • 如何使用 HTTP 标头发送非英语 unicode 字符串?

    我是 HTTP 相关问题的新手 我的问题是在 iOS 开发中 我想使用 HTTP 标头发送一个字符串 所以我使用 httpRequest setValue nonEnglishString forHTTPHeaderField custom
  • 加密json数据

    如何加密从客户端到服务器来回传输的 JSON 数据 当我使用firebug时 我可以看到所有数据 内容在result d 我正在使用 ASP NET 3 5 和 C 我们的管理员已将网站设置为使用 https 但我仍然可以发送 POST 请
  • Propel Query 中的动态表名称

    我想知道您是否可以使 propel 查询的表名称动态化 有点像变量 一个例子类似于 DynamicVar Query create 我让它在 ifs 中工作 就像下面的例子一样 但如果更动态地制作 可以删除相当多的行 这些表的设置都是相同的
  • 使用 PDO 在 SQLite 中检索单个(且唯一)行的最简单方法

    我有这个 PDO stmt db gt prepare SELECT FROM channels WHERE id id stmt gt bindValue id id SQLITE3 INTEGER result stmt gt exec
  • WAMP 不显示目录列表中的图标

    过去 我通过 vmware 处理 PHP 代码 但最近我决定转而通过 WAMP 在 Windows 8 1 上 在本地进行处理 我创建了一个空文件夹tests in the www folder 然后在我的浏览器上输入http localh
  • iOS 复合谓词

    我正在编写一个具有照片数据库的应用程序 每张照片都有多个与之关联的标签 并且该应用程序有一个带有大量切换的搜索页面 允许用户仅根据他们感兴趣的标签搜索照片 每个标签都存储了integerID 是因为它们对应于外部数据库的 ID 所以我尝试简
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • Xcode 本地化设置中没有加号或减号按钮

    我需要在两天内翻译 iOS 应用程序 但我的 XCode 版本 4 4 和 4 5 Developer Preview 都没有给我添加其他语言的选项 我只能选择单击 Make localized 但我只能选择英语 选择它后 Xcode 中的
  • 疯狂的 crond 行为。不断使 bash 进程失效

    我有一个看起来像这样的 crontab SHELL bin bash PATH sbin bin usr sbin usr bin MAILTO root HOME 0 59 var www html private fivemin zda
  • 子视图控制器旋转方法未被调用

    Summary 我试图将子视图控制器添加到父视图控制器 并让父视图控制器通知子视图控制器旋转事件 但是 旋转消息不会转发到子视图控制器 这是默认行为 为什么这种默认行为没有发生 环境 iOS 7 XCode 5 OSX 10 9 Detai
  • ZF2 工厂获取参数

    我有一个动态类别导航 在导航工厂中 我想从路线获取参数 我怎样才能做到这一点 在我看来 在我的 module php 中 public function getServiceConfig return array factories gt
  • 避免 SQLite3 中的 SQL 注入

    我正在尝试找出一种避免 SQL 注入的好简单方法 到目前为止我只能提出两个想法 对用户输入进行 Base64 编码 其实不想这样做 使用正则表达式删除不需要的字符 目前正在使用这个 不确定是否100 安全 这是我当前的代码
  • 如何使用 PDO 动态构建查询

    我正在使用 PDO 并想做这样的事情 query dbh gt prepare SELECT FROM table WHERE column value query gt bindParam table tableName query gt
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • sqlsrv_num_rows 不返回任何值

    我正在尝试获取查询中返回的行数 while 循环遍历结果有效 但由于某种原因 sqlsrv num rows 不返回任何值 result SELECT from dtable WHERE id2 apple query sqlsrv que
  • 哪个 PHP 5 版本最常用?

    当我开发将在不同配置的客户端 Web 服务 通常使用共享托管 上使用的应用程序时 我应该假设大多数 Web 服务器都具有哪个 PHP 5 版本 例如 5 2 x 5 3 x 等 在所有使用 PHP 版本 5 的网站中 有 84 9 使用版本
  • 更新查询时 ios 中出现“数据库锁定”错误

    我正在使用下面的代码更新查询 using sqlite 但我越来越 database is locked error 我尝试搜索一些 SO 链接 建议关闭数据库 但我再次执行此操作时遇到相同的错误 我已经提到过代码中出现错误的地方 cons
  • Swift 3 和 Xcode8 - init 的使用不明确

    在我安装 Xcode 8 并将项目转换为 Swift 3 之前 以下行没问题 现在转换后看起来像这样 let valueData Data Data bytes UnsafePointer

随机推荐

  • 使用 Android 应用程序更改网络运营商

    我正在尝试开发一个Android应用程序 它可以在地图上显示各个网络运营商的信号强度 问题是改变网络运营商的唯一方法是手动操作 关于如何在不手动更改的情况下获取此信息的任何想法 我认为有内部 私有 Android 类可以做到这一点 您将需要
  • Laravel 中的多线程

    我遇到了一个问题 我的数据库调用显着减慢了页面加载速度 我正在从选举数据填充多个图表 我的表包含大约 100 万行 我必须在每个方法中多次查询这些数据getCharts method I am 使用这个将返回数据传递给 JavaScript
  • Log4J2 AppenderLoggingException NoSuchMethodError StackLocatorUtil.getCurrentStackTrace()

    一旦发生异常 错误并且应该被记录 我就会收到以下错误 堆栈跟踪 org apache logging log4j core appender AppenderLoggingException java lang NoSuchMethodEr
  • iPhone 应用程序中的密码加密

    我需要将用户的密码存储在我的 iPhone 应用程序中 当将应用程序发布到应用程序商店时 我必须告诉Apple该应用程序中是否有出于导出目的的加密 我不希望我的应用程序仅限于美国 但我也不希望以明文形式通过网络存储或发送密码 所以基本上问题
  • v6 中可选参数的替代方法

    在 v5 中 我们可以添加尾随 路由可选参数 但与 v6 一样 对相同参数的支持已被删除 那么编写以下代码的替代方法是什么
  • 如何使用Log4Net实现日志文件自动归档

    我想以这样的方式配置 log4net 以便自动归档前一天的所有日志 是否有可能在 Log4Net 中自动存档以前的日志 我只想使用配置来执行此操作 而不使用任何第三方库 如 Sharplibzip 编写任何代码来创建存档 通过归档还要添加一
  • C# 正确格式化(缩进、对齐)C#

    我们有一个代码生成器munges给定数据库的模式 用于自动化我们内部的 n 层架构 输出是各种 C 部分类 每个文件一个 在处理所有字符串的代码中 我们尝试尽可能地控制缩进和格式 但当您在 Visual Studio 中打开文件时 格式总是
  • 逐行读取文件并分割值

    我需要读取一个txt文件 其组成如下 AA 1000 AA 320009 999999 AA 1011 AA 320303 111111 对于每个读取的行 我需要用 将其分割以到达第一回合 test 0 AA 1000 AA 320009
  • 调用 savechanges 时实体框架复制

    我首先使用entityframework 5代码 我有一个这样的模型 class Product public Product Fabrics new BindingList
  • 如何在Spring 3.0应用程序中配置Hibernate统计信息?

    我们如何配置以便在基于 Spring MVC 的 Web 应用程序中通过 JMX 获取 Hibernate 统计信息 有没有更好的方法来跟踪 Hibernate 性能 Set hibernate generate statistics to
  • Cakephp 2.0 使用电子邮件而不是用户名进行身份验证

    在我看来我有 在我的应用程序控制器中 public components array
  • ZF2中同一模块下的多个命名空间

    我在同一模块下配置多个命名空间 类时遇到问题 例如 我有一个名为 Account 的模块 其中我想包含所有与帐户相关的类 公司 accounts 用户 users 外部 api api 等 模块结构看起来像这样 Account Module
  • Base64 图像不显示在 RDLC 报告的渲染 PDF 上

    我正在尝试使用参数 CustomerSign 在 RDLC 报告中 我正在从报告中渲染 PDF 文件 并且看到 PDF 文件 我已配置图像属性如下 选择图像源 Database 使用该字段 Convert FromBase64String
  • 为什么 Objects.hash() 对于相同的输入返回不同的值?

    我运行了以下脚本 java 它给了我奇怪的结果 有谁可以帮忙解释一下吗 import java util Objects import org apache log4j Logger public class CacheTester pri
  • -D MACRO 和 #define MACRO 的优先级

    如果我有一个C文件 foo c 虽然我已经给出了 DMACRO 1作为编译的命令行选项 但是 如果在头文件中我也有 define MACRO 2 其中哪一个会优先 我正在假设您正在做什么 但是如果您想从命令行为该宏提供非默认值 请尝试对宏定
  • 多线程访问文件

    我们有一个多线程java程序 多个线程将写入一个文件 一个线程将从该文件中读取 我正在寻找一些设计想法 是否需要同步 文件通道理论上是线程安全的 来自javadoc 文件通道可供多个并发线程安全使用 这 close 方法可以随时调用 具体由
  • 读取套接字时Java中断线程[重复]

    这个问题在这里已经有答案了 可能的重复 如何立即终止阻塞在套接字IO操作上的线程 我有一个客户端在线程中运行 想要从 Java 中的套接字读取数据 但在阅读时 也许我想杀死线程 所以我interrupt它 但是套接字的读取方法会抛出异常吗I
  • 如何在 jQuery 中循环遍历数组?

    我正在尝试循环遍历一个数组 我有以下代码 var currnt image list 21 32 234 223 var substr currnt image list split array here 我正在尝试从数组中获取所有数据 有
  • C# - 捕获鼠标光标图像

    背景 我正在编写一个屏幕捕获应用程序 我的代码基于此项目 http www codeproject com KB cs DesktopCaptureWithMouse aspx display Print 请注意 代码还捕获了鼠标光标 这对
  • PHP iOS AES 加密

    我在尝试使用 AES 加密在 PHP 和我的 iOS 应用程序之间进行通信时遇到了问题 到目前为止 我已经考虑了两种实现方法 第一个是使用 OpenSSL 在 iOS 方面 我以模仿此处显示的代码的方式实现 http saju net in