首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化密码在技术上是什么意思?(在Java中使用AES )

优化密码在技术上是什么意思?(在Java中使用AES )
EN

Stack Overflow用户
提问于 2015-05-03 11:41:03
回答 1查看 148关注 0票数 0

我正在运行轻量级密码和非轻量级密码之间的比较。

我选择的轻量级密码是克莱菲亚,这是索尼的128位分组密码,我正在将它与128位臭名昭著的AES进行比较,这两个键都是128位。

我的比较是运行在一个真正的移动设备运行安卓操作系统(三星银河S3)。

关于克莱菲亚的说它比AES更快。

这似乎是合乎逻辑的,因为它是一个轻量级的算法,用于资源不足的设备上。

为了在android上编译这两种代码,我将用C编写的官方代码转换为Java。(虽然C可以在android上编译?))对于AES,我使用了本机Javax.Crypto库。(在互联网上有很多这样的例子)

令我印象深刻的是,完全相反的事情发生了。不是克莱菲亚速度更快,而是AES比克莱菲亚快约350倍。

我现在能想到的唯一原因是Clefia在他们的官方网站上发布的代码没有被优化,他们承认,因为下面是他们代码的拷贝粘贴。

* NOTICE * This reference code is written for a clear understanding of the CLEFIA * block cipher algorithm based on the specification of CLEFIA. * Therefore, this code does not include any optimizations for * high-speed or low-cost implementations or any countermeasures against * implementation attacks.

我可以假设(我可能错了) Javax.Crypto类使用了许多优化版本的AES。

这是我能想到为什么速度会有如此巨大差异的唯一原因。

因此,我的问题如下。

  • 当我们说优化时,技术上意味着什么?更少的子弹有利于安全?不同的密码?等?
  • 速度差异的原因可以用不同的方式解释吗?也就是说,优化不是造成这种速度差异的原因。
  • 我仍然无法找到Clefia的优化版本,而且我也不确定Java是否将其包含在最新的JDK中,因为Clefia现在是一个标准。做一个优化的算法留给想要用它来开发的用户还是公司(提出算法的一方)提供的?

任何想法、见解和想法都会受到高度赞赏。(如果你在我发布的文章中发现了逻辑上的缺陷,请随意分享。还请注意,我打算在http://crypto.stackexchange.com上发布这篇文章,但是那里的用户基数很低,这涉及到java,所以现在我在这里发布它,但是如果您认为我需要移到那里,请告知。另外,如果需要的话,我不介意共享Clefia和AES的代码。)

EN

回答 1

Stack Overflow用户

发布于 2015-05-03 13:55:38

硬件速度

在您所提到的文章中,它们表明当在硬件中实现时,在考虑Kbps/Gate时可以比AES更快。最好的有268.63 Kbps/门,最好的AES有135.81 Kbps/门,这大约是2的一倍。

软件速度

他们还对软件实现进行了比较,其中以12.9周期/字节的速度比AES只执行10.6周期/字节的速度慢一些。

这表明,这两种算法本身的速度都在2倍以内。

现在的问题是,您可以比较一个高度优化的、甚至可能是硬件支持的( ARMv8指令集现在包括在一条指令中执行完整AES的指令)与您自己的实现的java端口进行比较,而这个实现一开始就没有优化(原始代码甚至声明:这段代码不包括任何高速优化)。

另外,您正在测试的数据集有多大?在测试中如何考虑JIT编译的效果?

如果您想要一个比较结果,您也应该在Java中实现AES算法,然后进行比较。我的猜测是,这种方法也会使AES的实现相对缓慢。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30013401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档