重用密码(防止初始化)

时间:2015-06-26 08:10:18

标签: java android encryption android-ndk cryptography

我正在努力提高我们的加密性能。我们需要流式传输加密视频,因此我们对每个帧进行加密(准确地说是h.264 NALU)并通过网络发送。我们不能用这种方式在Android上输出PAL视频。

我们正在使用AES(AES/CBC/PKCS7Padding),我们对会话中的每个帧使用相同的密钥和IV。我知道,它不是很安全,但是当它实施时我不在那里而且改变它已经太晚了。因此,对于每个帧,我们使用相同的参数(键和IV)调用Cipher.init(),然后调用doFinal。是否有可能阻止这种情况并重新使用已初始化的Cipher对象?

或者是否有比AES更好的视频流算法?我们正在使用SpongyCastle。有更快的东西吗?或者我们应该使用OpenSSL在NDK中重写它?

2 个答案:

答案 0 :(得分:3)

只调用init()一次,然后反复调用doFinal()就是我们所做的,并且它的吞吐量提高了50%以上。

答案 1 :(得分:0)

  

是否有比AES更好的视频流算法?

这取决于您的加密应该有多强。主要标准是什么。

  

有更快的东西吗?

如果主要标准是速度,那么请查看一些密码。它们更快(用于传输音频/视频流)但弱阻止密码AES。

在CBC模式下使用AES也可以增强解密功能 - 它可以并行化。