如何实施IDEA?

时间:2010-08-22 13:58:15

标签: java encryption cryptography

我必须使用Java或C#中的IDEA(国际数据加密算法)创建一个可以加密和解密文本文件的应用程序。我知道在Java中有一个内置的JCE(Java密码学扩展),但是如何进一步处理,有人请给我一些建议吗?

4 个答案:

答案 0 :(得分:4)

无论出于何种原因都无法发表评论,所以我将此作为回复发布。

IDEA是一项专利算法,专利仅在2011年和2012年到期(取决于国家/地区)。它也不是最佳表现。因此,除非您要求使用IDEA,否则我建议您查看AES或RC4(ARCFOUR,因为RC4名称是注册商标)算法。 RC4速度更快,但在很大程度上取决于加密密钥的质量。

答案 1 :(得分:4)

Eugene对IDEA是对的。如果它在您的选择之下,则避免使用IDEA并选择其他算法是合理的。由于专利问题,IDEA很少使用,因此密码分析师对其进行调查的次数较少。此外,IDEA密钥的长度受限于128位,很可能很快就会变得不足。

大多数(并非绝对全部)开发框架都包括对标准加密算法的支持。事实上,使用标准化算法总是好的,因为它们是密码分析师最好的研究。 AES128 / 256是首选。 RC4密钥的最大长度以及IDEA密钥为128位;此外,它也是一种奇特的,可能不受某些框架的支持。

答案 2 :(得分:2)

您可以尝试使用BouncyCastle,它可用于Java和C#。但是,根据这个note,你需要为IDEA支持获得正确的jar(假设是Java):

  

从发布1.40开始实施   IDEA加密算法是   从常规jar文件中删除   一些用户的要求。罐子   名称仍为 -ext -   包括IDEA实施。

编辑(添加了指向示例的指针): 我没有尝试,但我认为DESExample可以适应你想做的事情,可能是用DESedeEngine替换IDEAEngine(和其他类似的)。 / p>

答案 3 :(得分:1)

到2012年,IDEA专利已过期。

我写了一个干净的open-source Java implementation of IDEA

源代码内容文件的名称:

Idea.java                 The main IDEA encryption module
IdeaFileEncryption.java   Encrypts or decrypts a file with IDEA
IdeaCmd.java              Command-line interface for encrypting/decrypting files
TestIdeaVectors.java      A test program that verifies this implementation against 
                          the test vectors published in 1999
TestIdeaMath.java         A test program for some of the math functions used in 
                          the IDEA modules

信任此算法,就像您信任其作者一样。