一个简单的加密/解密示例程序:import java.security.*;
import javax.crypto.*;
public class testdes {
public static void main(String[] args){
    testdes my=new testdes();
    my.run();
  }
public  void run() {
//添加新安全算法,如果用JCE就要把它添加进去
Security.addProvider(new com.sun.crypto.provider.SunJCE());
String Algorithm="DES"; //定义 加密算法,可用 DES,DESede,Blowfish
String myinfo="要加密的信息";
   try {
   //生成密钥
   KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
   SecretKey deskey = keygen.generateKey();   //加密
   System.out.println("加密前的二进串:"+byte2hex(myinfo.getBytes()));
   System.out.println("加密前的信息:"+myinfo);
   Cipher c1 = Cipher.getInstance(Algorithm);
   c1.init(Cipher.ENCRYPT_MODE,deskey);
   byte[] cipherByte=c1.doFinal(myinfo.getBytes());
    System.out.println("加密后的二进串:"+byte2hex(cipherByte));
   //解密
   c1 = Cipher.getInstance(Algorithm);
   c1.init(Cipher.DECRYPT_MODE,deskey);
   byte[] clearByte=c1.doFinal(cipherByte);
   System.out.println("解密后的二进串:"+byte2hex(clearByte));
   System.out.println("解密后的信息:"+(new String(clearByte)));  }
   catch (java.security.NoSuchAlgorithmException e1) {e1.printStackTrace();}
   catch (javax.crypto.NoSuchPaddingException e2) {e2.printStackTrace();}
   catch (java.lang.Exception e3) {e3.printStackTrace();}
  }
 public String byte2hex(byte[] b) //二行制转字符串
    {
     String hs="";
     String stmp="";
     for (int n=0;n<b.length;n++)
      {
       stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
       if (stmp.length()==1) hs=hs+"0"+stmp;
       else hs=hs+stmp;
       if (n<b.length-1)  hs=hs+":";
      }
     return hs.toUpperCase();
    }}javac编译通过,但执行时出错:c:\java testdes报错:Exception in method "main" java.lang.NoSuchMethodError
     at javax.crypto.SunJCE_b.<clinit><DashoA6275>
     at javax.crypto.KeyGenerator.getInstance<DashoA6275>
     at testdes.run<testdes.java:15>
     at testdes.main<testdes.java:6>
classpath都设置好了,.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;%JAVA_HOME%\jre\lib\jce.jar;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\jre\lib\ext\sunjce_provider.jar;
谁能告诉我是什么问题啊?

解决方案 »

  1.   

    你public  void run() 重写了run()方法
    但你的
    public class testdes {
    却没有:
     extends Thread 

     implements Runnable
      

  2.   

    不行的,加了 implements Runnable 还是一样的错误。
      

  3.   

    我在ECLIPSE下面运行是可以的啊,你的PATH目录是不是没设好?
    PATH=.;%JAVA_HOME%\bin
      

  4.   

    你的程序我在eclipse下我测试过,没问题的,估计还是你环境变量设置的不对