`
kavy
  • 浏览: 888494 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

AES加密限制文件解决方法

 
阅读更多

Java Security: Illegal key size or default parameters?

 

I had asked a question about this earlier, but it didn't get answered right and led nowhere. So I've clarified few details on the problem and I would really like to hear your ideas on how could I fix this or what should I try.

I've Java 1.6.0.12 installed on my Linux server and the code bellow runs just perfectly.

String key = "av45k1pfb024xa3bl359vsb4esortvks74sksr5oy4s5serondry84jsrryuhsr5ys49y5seri5shrdliheuirdygliurguiy5ru";
try {
    Cipher c = Cipher.getInstance("ARCFOUR");

    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "ARCFOUR");
    c.init(Cipher.DECRYPT_MODE, secretKeySpec);

    return new String(c.doFinal(Hex.decodeHex(data.toCharArray())), "UTF-8");

} catch (InvalidKeyException e) {
    throw new CryptoException(e);
}

Today I installed Java 1.6.0.26 on my server user and when I try to run my application, I get the following exception. My guess would be that it has something to do with the Java installation configuration because it works in the first one, but doesn't work in the later version..

Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
    at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6]
    at my.package.Something.decode(RC4Decoder.java:25) ~[my.package.jar:na]
    ... 5 common frames omitted

Line 25 is: c.init(Cipher.DECRYPT_MODE, secretKeySpec);

Notes:
* java.security on server's 1.6.0.12 java directory match almost completely with the 1.6.0.26 java.security file. There are no additional providers in the first one.
* the previous question is here.

share|improve this question
 

7 Answers

up vote129down voteaccepted

Most likely you don't have the unlimited strength file installed now.

You may need to download this file:

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download

Install the file in ${java.home}/jre/lib/security/.

share|improve this answer
 
    
Oh my, that did the trick! Thank you sooo much for this, i was scared I won't be able to upgrade to Java 7 when it comes out because of this. Haha. Thanks! :) –  Richards Jun 26 '11 at 11:31
5  
I wasted a lot of time on this problem. Thanks!!! –  Rahul Jul 18 '11 at 7:05
    
Since these files go under the jre directory, if I use them for development, the end user will need them installed as well in order to run my application correct (ie: The unlimited strength is not compiled in)? – wufoo Apr 10 '12 at 15:04 
    
@wufoo - Correct, the user has to have them also. –  James Black Apr 10 '12 at 17:03
1  
@aroth - Which version of the JDK are you using and which file did you install? –  James Black Oct 24 '12 at 11:09

For JAVA 7 the download link is jce-7-download

Copy the two downloaded jars in Java\jdk1.7.0_10\jre\lib\security
Take a backup of older jars to be on safer side.

share|improve this answer
 

"Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6"

http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

share|improve this answer
 

The JRE/JDK/Java 8 jurisdiction files can be found here:

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download

Like James said above:
Install the files in ${java.home}/jre/lib/security/.

share|improve this answer
 

I experienced the same error while using Windows 7 x64, Eclipse, and JDK 1.6.0_30. In the JDK installation folder there is a jre folder. This threw me off at first as I was adding the aforementioned jars to the JDK's lib/security folder with no luck. Full path:

C:\Program Files\Java\jdk1.6.0_30\jre\lib\security

Download and extract the files contained in the jce folder of this archive into that folder.

share|improve this answer
 

I also got the issue but after replacing existing one with the downloaded (from JCE) one resolved the issue. New crypto files provided unlimited strength.

share|improve this answer
 

There's a short discussion of what appears to be this issue here. The page it links to appears to be gone, but one of the responses might be what you need:

Indeed, copying US_export_policy.jar and local_policy.jar from core/lib/jce to $JAVA_HOME/jre/lib/security helped. Thanks.

share|improve this answer
 
    
Thanks, but I had US_export_policy.jar and local_policy.jar in my lib/security folder already once I installed Java.. And I couldn't find core/lib/jce by the way in my Java installation folder. –  Richards Jun 26 '11 at 11:20

Your Answer

转自:http://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters

分享到:
评论

相关推荐

    jdk8解除aes加密限制.zip

    本压缩包文件"jdk8解除aes加密限制.zip"很可能是针对这个问题提供了解决方案。 在Java中,加密相关的限制主要源于美国出口法规,这些法规限制了某些高强度加密算法的使用,以防止技术非法出口。因此,Java ...

    AES加密任意长度的字符串和任意大小的文件

    它是基于替换和置换的组合,设计精巧且安全性高,被全球许多组织...总之,这个代码库提供了一种全面的AES加密解决方案,能够处理各种大小的输入,不仅适用于字符串,还适用于大型文件,这对于数据隐私和安全至关重要。

    JAVA实现AES加密和解密

    在提供的压缩包文件"java aes加密、解密"中,应该包含了一个完整的Java项目,包含了上述所有步骤的代码示例,并且每个方法都有详细的注释,可以直接运行查看效果。这个项目无需任何额外的插件,只需要Java环境即可...

    delphi7 AES 加密兼容Java

    在Java环境中,AES加密通常使用`javax.crypto`包中的类实现,例如`Cipher`,`SecretKeySpec`和` IvParameterSpec`。步骤如下: 1. 导入库:在Java代码中引入必要的加密库。 2. 创建密钥和IV:使用`KeyGenerator`生成...

    aes.rar_AES C 文件_AES任意字符串_AES加密数组C_aes加密文件 c_aes长度过长

    AES加密文件在C语言中的实现通常涉及读取文件,将文件内容按128位块分段,然后对每一块进行加密,最后将加密后的块写回文件。可能还需要考虑文件头尾的处理,以及错误处理机制。 **AES长度过长** 如果输入数据的...

    AES实现前端JS和后端java加密解密

    AES(Advanced Encryption Standard...总结,AES加密在前端JavaScript和后端Java中的实现涉及选择合适的库,管理密钥和IV,以及使用相应的加密和解密方法。确保在实际应用中遵循安全标准,以保护数据的机密性和完整性。

    AES加密java实现.pdf

    文档内容给出了一个Java类实现的框架,展示了如何通过定义类成员变量和方法来构建一个AES加密器。尽管文档被OCR扫描出来可能存在一些识别错误,但核心概念和实现要点被清晰地描述出来。由于篇幅限制,这里不详细展开...

    Javascript实现Aes加密 中文WORD版

    最后,文档中提到的其他资源,如jb51.net、脚本之家等,可能提供了更多的JavaScript编程和加密相关的学习资料和社区支持,对于深入理解和实践JavaScript AES加密非常有帮助。PDF阅读器下载链接则暗示了可能需要阅读...

    微信小程序 AES加密 ECB模式js文件

    在提供的压缩包文件“AES加密ECB模式”中,很可能包含了一个实现了上述功能的JavaScript文件。这个文件可以方便微信小程序开发者快速集成AES-ECB加密功能。为了确保与Java端的AES-ECB加密保持一致,需要注意两者的...

    STM32AES加密程序.zip

    在提供的"14 AES加密实验"文件中,可能包含了以下内容: - 示例代码,展示了如何在STM32上配置AES模块、加载密钥、处理数据以及读取结果。 - 具体的函数接口,用于调用STM32的AES硬件加速器。 - 测试用例,可能包括...

    支持AES加密.zip

    综合来看,这个压缩包提供了一个适用于Java环境的AES加密工具类AesUtils.java,它可能包含了上述的加密模式和填充方法,并且可能考虑了非对称加密的私钥安全处理。这样的工具类对于开发人员来说非常实用,可以方便地...

    VB AES加密解密类

    标题为“VB AES加密解密类”的模块,旨在提供一种在Visual Basic(VB)环境中实现高级加密标准(AES)加密和解密功能的方法。AES是一种对称加密算法,广泛应用于数据保护、网络安全等领域,因其高效性和安全性而备受...

    iOS AES加密解密

    在iOS中,苹果提供了一个名为CommonCrypto的框架,它包含了AES加密的实现。在Objective-C项目中,我们需要添加`#import <CommonCrypto/CommonCrypto.h>`来使用这些功能。 接着,我们定义加密和解密的函数。加密通常...

    AES文件加密.rar

    在C#中实现AES加密解密功能,需要使用System.Security.Cryptography命名空间下的类库。这个软件是利用C#语言编写的,能够处理任意格式和大小的文件,这表明它可能使用了流式处理技术,以适应大文件的加密需求。 在...

    AES_51aes_AES加密_

    文件名 "AES" 可能是指包含AES加密算法的源代码文件,可能是用C语言或汇编语言编写,专门针对51单片机进行了优化。 综上所述,这个项目涉及在资源受限的51单片机环境中实现和优化AES加密算法,以满足低功耗、小内存...

    用aes算法对任意长度数据进行加密解密

    总之,这个例子展示了如何扩展AES加密以适应任意长度的数据,这对于处理各种大小的数据流和文件至关重要。理解这种实现方式有助于开发者在实际项目中更好地应用AES加密技术,确保数据的安全性。

    AES加密解密 java实现

    在Java中实现AES加密解密是一项常见的任务,特别是在需要确保数据传输安全的应用中。本篇将详细介绍如何在Java中使用AES进行加密和解密,并探讨相关密码学原理。 AES是一种块密码,它以128位(16字节)的数据块作为...

    AES加密工具 java 语言

    关于“加密秘钥长度无限制”,在Java中,JCE默认只允许使用最大128位的密钥,但通过安装不受限制的强度策略文件,可以解除这个限制,从而支持192位和256位的密钥。更长的密钥意味着更高的安全性,但也意味着更复杂的...

    AESEncryption AES加密 iOS

    总之,AES加密在iOS应用中扮演着重要角色,`AESEncryption.h` 和 `AESEncryption.m` 文件提供的类可以帮助开发者快速集成AES加密功能,以保护用户数据的安全。正确理解和使用这些文件,是提升iOS应用安全性的关键...

    aes加密解密 crypto实现

    在Python中使用`Crypto`库进行AES加密,我们需要准备一个密钥(key)和一个初始化向量(IV)。AES有三种工作模式:ECB(Electronic Codebook)、CBC(Cipher Block Chaining)和CFB(Cipher Feedback),其中CBC和...

Global site tag (gtag.js) - Google Analytics