我尝试使用AES 128位密钥解密4.2 MB .dcf文件,但是解密(在cipher.doFinal(data)函数上)花费了33秒,这是否正常?
这是一个代码片段:
long start = System.currentTimeMillis()/1000L;
try {
SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivspec);
android.util.Log.d("TEST", "Start decoding...." + String.valueOf(length));
byte[] decrypted = cipher.doFinal(content);
File file2 = new File(Environment.getExternalStorageDirectory().getPath() + "/test.mp3");
OutputStream os = new FileOutputStream(file2);
os.write(decrypted);
} catch (Exception ex) {
ex.printStackTrace();
}
long end = System.currentTimeMillis()/1000L;
android.util.Log.d("TEST","Time "+ String.valueOf(end-start));
您应该尝试计算不写入文件所花费的时间,即,在调用System.currentTimeMillis()
之前和之后立即调用cipher.doFinal()
。
话虽这么说,基于Android的手机通常使用最新的主频为500
MHz或更高的ARM处理器,并且从理论上讲,这种野兽每秒可以对几兆字节的数据进行AES加密或AES解密。
但是
,Android代码使用名为Dalvik的几乎Java虚拟机。在Android-2.2之前,这是一个解释器(没有JIT编译器),这意味着它对于计算密集型任务来说有点慢。
如果 您观察到的中等性能确实来自AES操作本身(而不是文件写入), 那么
可能的答案是您的VM提供了用Java编写并用Dalvik解释的AES实现。在那种情况下,除了希望有更好的VM实现之外,没有什么治愈方法(VM可以对AES使用本机代码实现;而且,在Android
2.2及更高版本中,Dalvik拥有JIT编译器,可以提高代码执行性能)。
我试图创建一个Android应用程序,它可以动态加密数据并将其写入存储。已经实现了没有加密的应用程序,在stackoverflow上查看了100个加密示例/帖子,但无法决定使用哪种方法。 一开始想到使用AES,就在谷歌上搜索它的安全性。每次输入16或32个字符(我希望安全性更好)的密码似乎并不方便。作为一种替代的非对称加密方式,人们想到了。用一个密钥加密,用另一个密钥解密,这样我就可以将用于加密的
问题内容: 结合我的另一个问题,并在更改了这部分代码之后 从解密部分,我遇到了另一个错误,这是 当我单击SheepTest.png时,文件为空。错误在哪里?谁能帮助我解决错误?谢谢。 问题答案: 我猜想这行返回null: 文档说明: “如果没有注册的ImageReader声称能够读取结果流,则返回null。” 空值将传递给此调用,从而导致NPE: 我不熟悉此API,但是从文档和此处看到的内容中,我
最近,由于系统升级,我们将应用程序移植到Android L版本5.0.2。我的应用程序不能播放像720p@60fps和1080p@60fps这样的高分辨率视频。 同样,这是我关于stackoverflow的问题,请原谅我关于错误的代码格式和直接引用的问题。
客户端(4.2.1)应用程序通过请求向(5.6)API发送公钥。此API使用符合的加密数据,然后使用OpenSSL public encryption和的客户端公钥加密AES加密的密钥。它将通过编码的数据发送回客户端android应用程序,客户端android应用程序将加密数据。我已经设置了一个基本的PHP测试脚本来测试整个过程,这是预期的工作。 目前,我正在客户端Android应用程序中实现解密
如何使用Pycrypto python库加密图像?我在互联网上找到了一些文本加密的例子,但在图像上找不到同样的例子。有人能帮我吗?