有一个功能要将拍照的图片进行加密保存,选择了DES加密。记录一下代码。
import java.security.Key; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; /** * Created by Administrator on 2018/4/3 0003. */ public class DesUtil { // 向量 private static final byte[] keyiv = { 1, 2, 3, 4, 5, 6, 7, 8 }; //加密 public static byte[] desEncodeCBC(byte[] key, byte[] data) throws Exception { Key deskey = null; DESKeySpec spec = new DESKeySpec(key); SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("DES"); deskey = keyfactory.generateSecret(spec); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); // 加密方法/运算模式/填充模式 IvParameterSpec ips = new IvParameterSpec(keyiv); cipher.init(Cipher.ENCRYPT_MODE, deskey, ips); byte[] bOut = cipher.doFinal(data); return bOut; } //加密 public static byte[] desEncodeCBC(String key, String data) throws Exception { byte[] _data = data.getBytes("UTF-8"); byte[] _key = key.getBytes("UTF-8"); byte[] bOut = desEncodeCBC(_key, _data); return bOut; // Base64加密后的密文 } //加密 public static byte[] desEncodeCBC(String key, byte[] data) throws Exception { byte[] _key = key.getBytes("UTF-8"); byte[] bOut = desEncodeCBC(_key, data); return bOut; // Base64加密后的密文 } //解密 public static byte[] desDecodeCBC(byte[] key, byte[] data) throws Exception { Key deskey = null; DESKeySpec spec = new DESKeySpec(key); SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("DES"); deskey = keyfactory.generateSecret(spec); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); IvParameterSpec ips = new IvParameterSpec(keyiv); cipher.init(Cipher.DECRYPT_MODE, deskey, ips); byte[] bOut = cipher.doFinal(data); return bOut; } //解密 public static String desDecodeCBC(String key, String data) throws Exception { byte[] _data = data.getBytes(); byte[] _key = key.getBytes("UTF-8"); byte[] bOut = desDecodeCBC(_key, _data); return new String(bOut, "UTF-8"); } //解密 public static String desDecodeCBC(String key, byte[] data) throws Exception { byte[] _key = key.getBytes("UTF-8"); byte[] bOut = desDecodeCBC(_key, data); return new String(bOut, "UTF-8"); } }