最近在做开发的时候遇到要对用户输入进行加密,上网搜索了一下java下可以使用的加密解密工具包。发现sun本身从jdk1.3开始就提供一个可以选用安装的sunjce工具包。利用sunjce可以产生指定加密算法下的密文于是我就按照用户手册编写了一个加密解密测试类。但是在运行时控制台总是报错没有指定算法(java.security.NoSuchAlgorithmException),可是我按照开发手册已经动态添加了实现类并指定了相应算法.
Security.addProvider(new com.sun.crypto.provider.SunJCE());
SecretKeyFactory keyFac = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
按照控制台错误信息搜索了一下,多半是说没有指定实现类即上文提到 Security.addProvider(new com.sun.crypto.provider.SunJCE());再次查找报错信息相关的网页时,发现有一个回复说将系统时间更改为2004年.试验了一下果然不报错了,那么将系统时间调到比当前时间更大的时间呢.当系统时间被调到2006年时,再次运行程序报错信息发生了变化控制台输出为:java.lang.SecurityException: Cannot set up certs for trusted CAs,在网上搜索了一下终于找到了真正原因: