Android AES / CBC加密

时间:2015-06-29 18:03:00

标签: java android encryption openssl aes

目前我正在使用javax.crypto.cipher库进行AES / CBC加密,但是,我发现它有点太慢了。需要45s-1m才能解密10分钟.mp4视频文件。

在Android上有更好的方法吗?我环顾四周,发现了一些关于openssl的帖子,但它真的快得多吗?

非常感谢任何链接,有用的帖子和/或评论。

2 个答案:

答案 0 :(得分:1)

使用流式传输而不是文件解密。如果您流式传输视频,则可以根据需要简单地执行视频解密。如果你使用CTR或CBC模式,你甚至可以跳到流中的特定位置,虽然这需要一些额外的技巧才能实现。

将解密保留给默认提供程序应该是首选,但您当然可以使用本机解密库来加快速度。

答案 1 :(得分:0)

在开始播放之前愿意解密整个视频会使用户暴露出明显的延迟。你应该考虑一种流式架构。

典型设计涉及javax.crypto.CipherInputStream类和本地http实例。 SDK中没有用于http服务器的类,您必须实现自己的类或查找类似于LocalSingleHttpServer的现有库。

看起来像:

mServer = new LocalSingleHttpServer();
mServer.setCipher(myGetCipher());
mServer.start();
path = mServer.getURL(path);
mVideoView.setVideoPath(path);
mVideoView.start();