- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
This是我的 AES 代码。
在 Gingerbread 下,我在 2.2 上加密数据然后尝试在 2.3 上解密后出现以下错误:
Caused by: javax.crypto.BadPaddingException: pad block corrupted
at org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(JCEBlockCipher.java:715)
at javax.crypto.Cipher.doFinal(Cipher.java:1090)
at com.citc.wallet.util.security.SimpleCrypto.decrypt(SimpleCrypto.java:63)
... 21 more
我发现一些帖子说 SecureRandom
在不同的系统下产生不同的结果:
BouncyCastle AES error when upgrading to 1.45
如何在 2.3 上避免这个问题?
我可以以某种方式强制 2.3 使用相同的 SecureRandom 类吗?
我是否需要使用某种可移植的加密方法,如果需要怎么办?
最佳答案
答案是你根本不应该真正做你正在做的事情。这是罪魁祸首:
sr.setSeed(seed);
kgen.init(128, sr); // 192 and 256 bits may not be available
SecretKey skey = kgen.generateKey();
你永远不应该用一些不可预测的随机值来填充你的 key ,因为你以后需要重新创建这个完全相同的 key 。以下是 android 文档中的一些关键行
"Seeding SecureRandom may be insecure"
Although it is common practice to seedRandom with the current time, that isdangerous with SecureRandom since thatvalue is predictable to an attackerand not appropriate for secure use.
无论如何,我知道你的论点是你只是在“填充” key ,而你所做的事情的安全性并不是什么大问题。
如果您要接受 192 位或 256 位实现的 128 位 key ,则必须实现一种可重复的方法,将 key 扩展到 192 位或 256 位。如果愿意,您甚至可以将全 0 添加到 key 中,但真正的关键是必须以某种方式完成,以便您可以在每个系统上重复它。
无论如何,您可能还需要考虑您正在做的事情可能会在 Android 以外的系统上使用。在这些情况下,应该选择使用更“便携”的方法来扩展 key 。
关于android - AES Gingerbread ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4536241/
这是一个晦涩的问题,我发布它只是为了防止其他人遇到它。 我正在开发 Node/Backbone/Marionette JavaScript Web 应用程序,它使用 snap.js 来隐藏/显示抽屉导
我们发现 Gingerbread 默认浏览器处理跨域请求的方式与大多数其他浏览器不同。服务器代码使用所有正确的 header 访问控制 header 和 200 状态代码适本地响应 OPTIONS 调
This是我的 AES 代码。 在 Gingerbread 下,我在 2.2 上加密数据然后尝试在 2.3 上解密后出现以下错误: Caused by: javax.crypto.BadPaddin
已更新 我在 android 2.3 上遇到渐变位图问题。我读了这个great article并使用下一个选项解码我的位图: BitmapFactory.Options options = new B
我创建了一个自定义的 RatingBar,它可以有 5 种不同的颜色,并且有矩形条,点在星形下方。这是它的样子: 我在几个地方使用这个 View ,在 Android 4.0+ 上一切正常。但是在 G
我正在为 Android 编写一个使用 Fragments 的应用程序,但是当我在 GingerBread 手机上运行该应用程序时,我在这一行中收到错误: inflater.inflate(R.lay
我想扩展 Android 2.3 键盘 (LatinIme)。我从 https://android.googlesource.com/platform/packages/inputmethods/La
我可以毫无问题地连接和使用 Android 3.0+、4.0+ 设备,也可以从 Eclipse 中查看和使用它们。 但是,当我尝试将任何 Froyo/Gingerbread 设备连接到我的电脑时,它甚
如果我在 Gingerbread 模拟器上运行我的代码,它会给我: 网页不可用,下面列出了页面的源代码。 如果我在 ICS 或 JB(物理电话和模拟器)上运行该应用程序,它确实有效: webv
我正在开展一个个人项目,该项目将包括一个主屏幕小部件,该小部件使用来自服务的信息进行更新 - 我正在使用 Android 3.1 平板电脑(实体)和 Android 2.3 模拟手机进行开发。 对于
我在使用浏览器为 Cordova 应用模拟 Android Gingerbread 时遇到问题。你看,我发布了一个使用 Cordova 的 Gingerbread+ 应用程序到 GooglePlay。
根据android documentation : Alternatively, starting with ICE_CREAM_SANDWICH, you can also safely restr
我正在使用 android x86 gingerbread live CD,当我想通过以下方式提供 ip 地址时Alt + F1 su ifconfig "ip address" eth0 up 显示
我想以编程方式检查当前的 android 版本并在版本高于 Gingerbread 时执行一段代码但是当我尝试使用 android.os.Build.VERSION_CODES.GINGERBREAD
我需要知道如何在 Android 中为 Gingerbread 版本实现拖放操作。据我所知,Gingerbread 默认不支持。 我编写的代码:一个 ViewGroup 类来保存动态添加的子项,每个子
我只是想在我的 Activity 中创造一种看起来像 Gingerbread 电池的趋势(见上图) 我正在深入观察 Android git并找到似乎是正确的 Activity 不幸的是,我找不到与 C
起初我认为这是我的应用程序的问题,但它似乎发生在 Gingerbread 模拟器的任何应用程序中(尽管有趣的是,不是主屏幕)。 要复制我的问题,打开 eclipse 并启动 Gingerbread 的
我相信这是来自 androidsnippets.org 的 fragment - 为什么它在 Android 2.3 上不起作用?如何解决? 错误 03-05 23:19:17.479: WARN/S
我正在尝试创建一个其中包含子文件夹的文件夹。我写了这段代码 File myFolder = new File(Environment.getExternalStorageDirectory().get
在我的工作中,我需要从设置“无线和网络”中删除“蓝牙”。所以我不知道第一步是什么。我认为是编辑Android的Kernel或UI。 请问有人可以帮我吗? 最佳答案 除非您正在构建自己的 ROM,否则您
我是一名优秀的程序员,十分优秀!