Java Cryptography Extension:Unsupported keysize or algorithm parameters

本文介绍了解决支付过程中因URL过长导致无法获取返回结果的问题。通过更新JCE策略文件,解决了Java中因密钥长度限制引发的安全异常。
最近做支付要得到返回的结果,但支付生成的url过长,无法得到结果。


String ItemUrl = "https://XXXXXXXXXXXXXXXXXXXXXXXXXXXX";//比较长的url
BufferedReader bufferedreader = null;
StringBuffer stringbuffer = new StringBuffer(200);
try
{
URL url = new URL(ItemUrl);

Log.err.println("url string:"+url.toString());

bufferedreader = new BufferedReader(new InputStreamReader(url.openStream()));
char ac[] = new char[4096];
for(int i = 0; (i = bufferedreader.read(ac)) != -1;)
stringbuffer.append(ac, 0, i);

result = stringbuffer.toString();
}catch(Exception exception){
throw new Exception();
}
finally{
try{
if(bufferedreader != null)
bufferedreader.close();
}
catch(Exception exception2) { }
}

抛出异常:
java.lang.SecurityException: Unsupported keysize or algorithm parameters at javax.crypto.Cipher.init(DashoA6275)

原因:keysize长度有限制(限制多少没深究)

(1)sunjdk解决方法:更新jce_policy-1_4_2.zip

下载页面:
http://java.sun.com/j2se/1.4.2/download.html
或http://www.oracle.com/technetwork/java/javase/download-138376.html
点the Archive area.跳转
http://www.oracle.com/technetwork/java/archive-139210.html
选Java Cryptography Extension 1.4.2 go
最后页面:
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=7503-jce-1.4.2-oth-JPR@CDS-CDS_Developer

下载jce_policy-1_4_2.zip解压后更新到:C:\bea\jdk142_05\jre\lib\security目录

()ibmjdk解决方法:更新unrestricted.zip
https://www14.software.ibm.com/webapp/iwm/web/reg/download.do?source=jcesdk&lang=en_US&S_PKG=142ww

下载unrestricted.zip解压后更新到:C:\bea\jdk142_05\jre\lib\security目录

重新执行无错误。
package com.g5air.fly.backstage.service.utils.jasypt; import com.g5air.fly.backstage.service.config.biz.CommonConfig; import org.apache.commons.lang3.StringUtils; import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; import org.jasypt.encryption.pbe.StandardPBEByteEncryptor; import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; public class G5JasyptUtils { public static final String password= CommonConfig.jasyptKey; public static String encryptPwd( String value) { PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); encryptor.setConfig(cryptor(StringUtils.isEmpty(password)?"china":password)); String result = encryptor.encrypt(value); return result; } public static String decyptPwd( String value) { PooledPBEStringEncryptor decryptOr = new PooledPBEStringEncryptor(); decryptOr.setConfig(cryptor(StringUtils.isEmpty(password)?"china":password)); String result = decryptOr.decrypt(value); return result; } public static SimpleStringPBEConfig cryptor(String password) { SimpleStringPBEConfig config = new SimpleStringPBEConfig(); config.setPassword(password); config.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM); config.setKeyObtentionIterations("1000"); config.setPoolSize("1"); config.setProviderName("SunJCE"); //jayspt采用了JCE(Java Cryptography Extension),默认采用SunJCE中的PBEWithMD5AndDES加密方式来加密 config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); config.setStringOutputType("base64"); return config; } } 将以上代码转换成python代码
最新发布
11-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值