我的环境是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的,这样才能调试代码么。有谁知道解决办法吗?
去下SUN独立的加密算法包, 放到JDK下就好了。
des加密时密钥不能少于16位
strAlgorithm 传的参数是什么?是 “DES” 吧?
Cipher.ENCRYPT_MODE 加密模式
keySpec = new SecretKeySpec(deskey.getKey(), "DES"); 是要对称加密算法?
应该是 keySpec 出的错误
key 要做下处理 (new BASE64Decoder()).decodeBuffer(key)
sun.misc.BASE64Decoder包的