有标准算法,应该就是MAC运算

解决方案 »

  1.   

    哪么请教具体应该怎样做啊,我主要是用于加密URL地址的参数.还有什么方法可以实现这个加密呢??要可解密的~
      

  2.   

    import java.security.SecureRandom;import javax.crypto.Cipher;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESKeySpec;public class Encrypt {
      
        public Encrypt() {
        }
        
        
        
            public byte[] getKey() throws Exception {
            return "[B@170888e".getBytes();
        }    
        public byte[] encryptData(String encryptdata)
                throws Exception {
            SecureRandom sr = new SecureRandom();
            byte[] rawKeyData = getKey();        DESKeySpec dks = new DESKeySpec(rawKeyData);        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey key = keyFactory.generateSecret(dks);
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(Cipher.ENCRYPT_MODE, key, sr);
            byte[] data = encryptdata.getBytes();
            byte[] encryptedData = cipher.doFinal(data);        return encryptedData;
        }    public String decryptData(byte[] decryptdata)
                throws Exception {        SecureRandom sr = new SecureRandom();        byte[] rawKeyData = getKey();
            DESKeySpec dks = new DESKeySpec(rawKeyData);        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey key = keyFactory.generateSecret(dks);        Cipher cipher = Cipher.getInstance("DES");
            cipher.init(Cipher.DECRYPT_MODE, key, sr);        byte[] encryptedData = decryptdata;
            byte[] decryptedData = cipher.doFinal(encryptedData);
            return new String(decryptedData);
        }
        
        public static void main(String[] args) {
            try {
                Encrypt encrypt = new Encrypt();
                String enpasswd = encrypt.encryptData("111111");
                String depasswd = encrypt.decryptData( enpasswd );        } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
      

  3.   

    import java.security.Key;
    import java.security.SecureRandom;
    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;/**
     *
     * 使用DES加密与解密,可对byte[],String类型进行加密与解密
     * 密文可使用String,byte[]存储.
     *
     * 方法:
     * void getKey(String strKey)从strKey的字条生成一个Key
     *
     * String getEncString(String strMing)对strMing进行加密,返回String密文
     * String getDesString(String strMi)对strMin进行解密,返回String明文
     *
     *byte[] getEncCode(byte[] byteS)byte[]型的加密
     *byte[] getDesCode(byte[] byteD)byte[]型的解密
     */public class DesEncrypt {
      Key key;  /**
       * 根据参数生成KEY
       * @param strKey
       */
       public void getKey(String strKey) {
        try {
          KeyGenerator _generator = KeyGenerator.getInstance("DES");
          _generator.init(new SecureRandom(strKey.getBytes()));
          this.key = _generator.generateKey();
          _generator = null;
        } catch (Exception e) {
          e.printStackTrace();
        }
      }  /**
       * 加密String明文输入,String密文输出
       * @param strMing
       * @return
       */
      public String getEncString(String strMing) {
        byte[] byteMi = null;
        byte[] byteMing = null;
        String strMi = "";
        BASE64Encoder base64en = new BASE64Encoder();
        try {
          byteMing = strMing.getBytes("UTF8");
          byteMi = this.getEncCode(byteMing);
          strMi = base64en.encode(byteMi);
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
          base64en = null;
          byteMing = null;
          byteMi = null;
        }
        return strMi;
      }  /**
       * 解密 以String密文输入,String明文输出
       * @param strMi
       * @return
       */
      public String getDesString(String strMi) {
        BASE64Decoder base64De = new BASE64Decoder();
        byte[] byteMing = null;
        byte[] byteMi = null;
        String strMing = "";
        try {
          byteMi = base64De.decodeBuffer(strMi);
          byteMing = this.getDesCode(byteMi);
          strMing = new String(byteMing, "UTF8");
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
          base64De = null;
          byteMing = null;
          byteMi = null;
        }
        return strMing;
      }  /**
       * 加密以byte[]明文输入,byte[]密文输出
       * @param byteS
       * @return
       */
      private byte[] getEncCode(byte[] byteS) {
        byte[] byteFina = null;
        Cipher cipher;
        try {
          cipher = Cipher.getInstance("DES");
          cipher.init(Cipher.ENCRYPT_MODE, key);
          byteFina = cipher.doFinal(byteS);
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
          cipher = null;
        }
        return byteFina;
      }  /**
       * 解密以byte[]密文输入,以byte[]明文输出
       * @param byteD
       * @return
       */
      private byte[] getDesCode(byte[] byteD) {
        Cipher cipher;
        byte[] byteFina = null;
        try {
          cipher = Cipher.getInstance("DES");
          cipher.init(Cipher.DECRYPT_MODE, key);
          byteFina = cipher.doFinal(byteD);
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
          cipher = null;
        }
        return byteFina;
      }  public static void main(String args[]) {
        DesEncrypt des=new DesEncrypt();//实例化一个对像
        des.getKey("aadd");//生成密匙    String strEnc = des.getEncString("明文");//加密字符串,返回String的密文
        System.out.println("加密文:"+strEnc);    String strDes = des.getDesString(strEnc);//把String 类型的密文解密
        System.out.println("解密文:"+strDes);
      }
    }