gpt4 book ai didi

java - 在Android上解密 "SunJCE"AES加密数据

转载 作者:行者123 更新时间:2023-11-30 08:42:56 26 4
gpt4 key购买 nike

我们需要编写一些 Android 代码来解密从我们的服务器发送的一些数据。我们的服务器团队为我们提供了一些使用“SunJCE”提供程序的示例解密代码,不幸的是,Android 上不存在该提供程序。

Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");

有人知道在 Android 上实现这个的最干净的方法吗?如果我们在 Android 上尝试这个

Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");

然后看起来一些不需要的垃圾出现在解密文本的末尾,例如:

ComparisonFailure: expected:<...lAAAAABJRU5ErkJggg==[]> but was:<...lAAAAABJRU5ErkJggg==[��������]>    

我们在 Android Cipher 类中尝试了很多不同转换的组合(例如“AES/CBC/PKCS5Padding”),但总是遇到 BadPaddingExceptions 之类的问题。

我们还能够使用纯 Java 模块解密此数据,该模块似乎没有显示相同的垃圾字符。有没有办法只使用 Android 类来做到这一点?

最佳答案

Java 代码中也存在同样的垃圾。只是您可能在使用默认拉丁语 (ISO_8859_1) 字符集的 Windows 上运行此程序,而 Android 默认使用 UTF-8。它还取决于用于打印字符的控制台和字体。在这种情况下,所使用的填充可能不会在 Windows 控制台上打印,但会在 Android 代码上打印。

您需要查看字节数组(例如十六进制)以找出使用了哪个填充,然后在将明文转换为字符串之前将其删除。

关于java - 在Android上解密 "SunJCE"AES加密数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34402933/

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