同题!网上这方面资料很多,但有些程序编译后有问题,也达不到正确的结果!请大家帮忙,分不够,我可以在加!

解决方案 »

  1.   

    package com.securty;import sun.misc.BASE64Decoder;public class DES1 {
    public static void main(String[] args) {
    String instr  = "13072531760";//"3033$13311083060$D10$2004-02-24 16:19:27";////
        BASE64Decoder base64d = new BASE64Decoder();     String materialKey = "yhzTnrO3yx1uJEOwzo5xkE/MmpmKi3MX";////
        try {
            byte[] mykey = base64d.decodeBuffer(materialKey);         byte[] plainText = instr.getBytes();         javax.crypto.spec.SecretKeySpec secrekeysp = new javax.crypto.spec.SecretKeySpec(mykey,"DESede");
            java.security.Key key = (java.security.Key) secrekeysp;         javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("DESede");
            cipher.init(javax.crypto.Cipher.ENCRYPT_MODE,key);
            byte[] cipherText = cipher.doFinal(plainText);
            System.out.println("cipherText"+cipherText.length);
            //instr = new String(cipherText);
            //System.out.println("instr=="+instr);
            //得到的正确结果应该是dpPeria1JxoV2uVue3ty/w==
        }catch (Exception e){
         System.out.println("e="+e);
        }
    }
    }我贴一个程序,请大家帮忙看看!这个是ede模式!怎么改成符合我的要求,我改成DESecb,出异常!
      

  2.   

    应该使用DESEDE/ECB/PKCS7Padding方式
    sun jce好象没有提供pkcs7padding的填充方式,只提供了padding5#的,你需要一个第三方jar来做