package com.dodonew.online.util;import android.util.Base64;import java.security.MessageDigest;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.crypto.spec.IvParameterSpec;public class DesSecurity {Cipher deCipher;Cipher enCipher;public DesSecurity(String key, String iv) throws Exception {if (key == null) {throw new NullPointerException("Parameter is null!");}InitCipher(key.getBytes(), iv.getBytes());}private void InitCipher(byte[] secKey, byte[] secIv) throws Exception {MessageDigest md = MessageDigest.getInstance("MD5");md.update(secKey);SecretKey key = SecretKeyFactory.getInstance("DES").generateSecret(new DESKeySpec(md.digest()));IvParameterSpec iv = new IvParameterSpec(secIv);this.enCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");this.deCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");this.enCipher.init(1, key, iv);this.deCipher.init(2, key, iv);}public String encrypt64(byte[] data) throws Exception {return Base64.encodeToString(this.enCipher.doFinal(data), 0);}public byte[] decrypt64(String data) throws Exception {return this.deCipher.doFinal(Base64.decode(data, 0));}}
function DES_Encrypt() {let iv = CryptoJS.enc.Utf8.parse("32028092");let key = CryptoJS.enc.Hex.parse(CryptoJS.MD5("65102933").toString());var result = CryptoJS.DES.encrypt(rowdata, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7}).toString();return result;}
这个apk的重点是对key的解析:
MessageDigest md = MessageDigest.getInstance("MD5");md.update(secKey);SecretKey key = SecretKeyFactory.getInstance("DES").generateSecret(new DESKeySpec(md.digest()));
这儿是把传入的secKey直接md5得出的结果并没有hex解析就放进SecretKeyFactory进行解析
另外就是,解密的时候,记得吧“\n”删掉
