gpt4 book ai didi

Java 密码更新与 IOS CommonCrypto 更新

转载 作者:行者123 更新时间:2023-11-30 10:02:04 28 4
gpt4 key购买 nike

我正在开发适用于 Android 和 IOS 的应用程序

对于 Android,我使用“AES/CBC/NoPadding”密码,对于 IOS,我使用 CommonCrypto,其算法/模式/填充与 Android 相同

我正在使用公用 key 初始化密码,以便在两个平台上获得相同的结果

在 Android 中,我使用 cipher.update(inpBuf, inpOffset, inpLen, outBuf, outOffset)出于加密/解密的目的,与我在 IOS 中执行的方式相同。

我在IOS中尝试过CCCryptorUpdate,但结果数组是[0,0,0......0]

请指导一下,哪里出了问题?

最佳答案

AES 是一种分组密码,以 16 字节为单位对数据进行加密。调用 update() 时,所有 16 字节 block 都将被加密,任何多余的字节将等待,直到下一次 update() 调用。当不再有数据需要加密时,您可以使用 doFinal() 完成加密,该函数刷新最后一个 block + 并应用所需的任何填充。为什么使用 NoPadding?您是否确保您的数据与 AES 的 block 大小匹配?

在 IOS 中解密时,您使用相应的 CCCryptorUpdate()CCCryptorFinal()。只有在 CCCryptorFinal() 之后,您才会获得完整的解密消息。 CCCryptorUpdate() 可能会也可能不会返回数据,具体取决于缓冲区中卡住的数据量等。

关于Java 密码更新与 IOS CommonCrypto 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37895363/

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