PHP AES 解密工作加密不工作

2024-04-02

所以,我有 4 件中的 3 件在工作,iOS 加密-解密由此而来Link http://iphonedevelopment.blogspot.com/2009/02/strong-encryption-for-cocoa-cocoa-touch.html我能够解密从 iOS 加密的数据,但在 PHP 端加密时遇到问题。 当我回显加密代码时。 PHP 打印类似 F>HFl8aR 的内容是什么意思?

SALTKEY = 'a16byteslongkey!';

解密代码:Working

     $result =  mcrypt_decrypt(MCRYPT_RIJNDAEL_128, (SALTKEY . str_repeat(chr(0x00), 16)), 
                               base64_decode($text), 'ecb');
     $pad_char = ord(substr($result, -1));
     return substr($result, 0, strlen($result) - $pad_char);

加密代码:不工作

     $result =  mcrypt_encrypt(MCRYPT_RIJNDAEL_128, (SALTKEY . str_repeat(chr(0x00), 16)), 
                               base64_encode($text), 'ecb');
     $pad_char = ord(substr($result, -1));
     return substr($result, 0, strlen($result) - $pad_char);
  • iOS 上的结果:文本=“你好”
    加密=“7opqbb7sEVNoXplyQv/X8g==”
    解密(7opqbb7sEVNoXplyQv/X8g==)=“你好”

  • PHP 结果:文本=“7opqbb7sEVNoXplyQv/X8g==”
    解密=“你好”
    (Hello) 的加密 = "_~TPn~p3MF?"


我认为很明显,IOS 加密给出了 7 位结果(看起来像 base64 编码),而 PHP 给出了 8 位表示。

你似乎还没有掌握窍门倒车操作。

解密是由base64_decode输入,然后应用mcrypt_decrypt。因此,要反向执行此操作,您需要首先mcrypt_encrypt, and then base64_encode.

i.e.

 $result =  base64_encode(
          mcrypt_encrypt(MCRYPT_RIJNDAEL_128, 
                (SALTKEY . str_repeat(chr(0x00), 16)), 
                $text, 'ecb'));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP AES 解密工作加密不工作 的相关文章

随机推荐