问题描述
我的环境是jdk1.5,在请求一个webService的时候要在soap header中传一个密码,并对密码进行DES加密。但是现在加密代码: deskey = new DESKeySpec(key);keySpec = new SecretKeySpec(deskey.getKey(), "DES"); //报错的地方Cipher cipher = Cipher.getInstance(strAlgorithm); //报错的地方cipher.init(Cipher.ENCRYPT_MODE, keySpec);byte[] utf8 = strDataToEncrypt.getBytes("UTF8");byte[] enc = cipher.doFinal(utf8);strResult = new sun.misc.BASE64Encoder().encode(enc);报了java.security.NoSuchAlgorithmException: Cannot find any provider suppor的错误,网上查了好多资料都没什么解决的办法,也试了别人说只单启Tomcat就不会报错了,但是我是要在eclipse中启Tomcat的,这样才能调试代码么。有谁知道解决办法吗? 问题补充:srj2903 写道
解决方案
去下SUN独立的加密算法包, 放到JDK下就好了。
解决方案二:
strAlgorithm 传的参数是什么?是 “DES” 吧?Cipher.ENCRYPT_MODE 加密模式keySpec = new SecretKeySpec(deskey.getKey(), "DES"); 是要对称加密算法?应该是 keySpec 出的错误key 要做下处理 (new BASE64Decoder()).decodeBuffer(key) sun.misc.BASE64Decoder包的
解决方案三:
des加密时密钥不能少于16位