package com.yihui.threedes; import java.security.Key; import java.util.Scanner; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import javax.crypto.spec.IvParameterSpec; import sun.misc.BASE64Decoder; public class Destest { /** * BASE64Decoder 对象 用于拿到加密后传过来的字符串转byte */ static final BASE64Decoder decoder = new BASE64Decoder(); public static void main(String[] args) throws Exception { /** * 密钥 32位 固定 与加密密钥一致 */ byte[] key = new BASE64Decoder().decodeBuffer("fffffffe79ffffff9bffffffd36b2c1c"); byte[] keyiv = { 1, 2, 3, 4, 5, 6, 7, 8 }; Scanner sc = new Scanner(System.in); //拿到存储地址的byte数据 byte[] strDecode = des3DecodeCBC(key, keyiv, decoder.decodeBuffer("zb4vF6cO48g=")); String strGet = new String(strDecode, "UTF-8"); System.out.println("解密后的字符串内容为:" + strGet); } public static byte[] des3EncodeCBC(byte[] key, byte[] keyiv, byte[] data) throws Exception { Key deskey = null; DESedeKeySpec spec = new DESedeKeySpec(key); SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede"); deskey = keyfactory.generateSecret(spec); Cipher cipher = Cipher.getInstance("desede" + "/CBC/PKCS5Padding"); IvParameterSpec ips = new IvParameterSpec(keyiv); cipher.init(Cipher.ENCRYPT_MODE, deskey, ips); byte[] bOut = cipher.doFinal(data); return bOut; } public static byte[] des3DecodeCBC(byte[] key, byte[] keyiv, byte[] data) throws Exception { Key deskey = null; DESedeKeySpec spec = new DESedeKeySpec(key); SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede"); deskey = keyfactory.generateSecret(spec); Cipher cipher = Cipher.getInstance("desede" + "/CBC/PKCS5Padding"); IvParameterSpec ips = new IvParameterSpec(keyiv); cipher.init(Cipher.DECRYPT_MODE, deskey, ips); byte[] bOut = cipher.doFinal(data); return bOut; } }
java 3des加密解密
猜你喜欢
转载自blog.csdn.net/qq_39313596/article/details/80579578
今日推荐
周排行