Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP上的aes 256加密和ios pannding解密_Php_Objective C_Aes_Base - Fatal编程技术网

PHP上的aes 256加密和ios pannding解密

PHP上的aes 256加密和ios pannding解密,php,objective-c,aes,base,Php,Objective C,Aes,Base,我正在尝试加密服务器上的字符串并将其发送到我的iPhone 当我在iphone上加密并将其发送到服务器上解密时,一切都正常 但是当我试图在我的服务器(php页面)上加密时,我无法在iPhone上解密 e、 g:当我在PHP上加密“True”时,我得到: ca 82 66 c8 be 5a a9 fb d8 7f 25 b6 1e f0 fb 68 54 72 75 65 0 0 0 0 0 0 0 0 0 0 0 然后我在做一些基本动作 YOJMYL5AQFvyyWYW2HVD7AA== 当我把

我正在尝试加密服务器上的字符串并将其发送到我的iPhone

当我在iphone上加密并将其发送到服务器上解密时,一切都正常

但是当我试图在我的服务器(
php页面
)上加密时,我无法在iPhone上解密

e、 g:当我在PHP上加密“True”时,我得到:

ca 82 66 c8 be 5a a9 fb d8 7f 25 b6 1e f0 fb 68 54 72 75 65 0 0 0 0 0 0 0 0 0 0 0

然后我在做一些基本动作

YOJMYL5AQFvyyWYW2HVD7AA== 当我把它发送到我的iphone时,我无法正确解密

但当我试图在Iphone上加密“True”时,我得到了:

ca 82 66 c8 be 5a a9 fb d8 7f 25 b6 1e f0 fb 68 54 72 75 65 c c c c c c c c c c

base64-

fwqkKsopev3Xmu4BF4OE5Q==


有人能帮我找到解决办法吗?

区别在于填充。PHP解决方案不执行标准化的填充机制。相反,它使用零填充,如果纯文本以
00
h值字节的字符串结尾,这可能会导致问题,因为它们将通过取消添加机制(或任何
trim
right\u trim
方法)从纯文本中删除

您应该在PHP中加密之前填充纯文本,就像CCCrypt一样。CCCrypt使用了一种良好的标准化填充模式,称为PKCS#7填充。此模式始终填充1到16(块大小)字节。字节的值与填充字节数相同。在您的示例中,它是以十六进制表示的
0C
h,或12个填充字节

查看如何在PHP中填充/取消填充。填充/取消添加始终在原始纯文本上执行,从不在密文上执行


请注意,您的密文可能是用IV值预先固定的。前16个字节不应解密。它们应该用作IV,并被解密函数跳过。通常,应为每次加密创建一个新的IV值。否则,您将能够看到明文(开头)是否与前面的相同。随机IV更改每次加密的整个密文。

Ummm。。。这两种情况都不应该发生。特别是结尾的空填充。那是不对的。您正在运行的加密设置肯定不正确。至于base64编码,请查看正在使用的算法(有多种方法可以“base64编码”字符串)…请查看:或。。我能更清楚地告诉我吗?