java代码示例: /* * key : 密钥Key,key的长度必须大于等于 3*8 = 24 位哈 * iv : 初始化向量,增强随机性,长度一般为8的倍数位 * str : 需要加解密的字符串 * cipherType : 实例化Cipher对象类型, "DESede/CBC/PKCS5Padding" 加密算法名称/分组加密模式/分组的填充方式 * keySpex : 实例化密钥生成类型 ,"DESede" 为3DES算法 * */ private String encrypt(byte[] key, byte[] iv, String str,String cipherType,String keySpec) throws Exception { Cipher cipher = initCipher(Cipher.ENCRYPT_MODE,key,iv,cipherType,keySpec); // 加密结果的byte数组使用Base64转换为字符串 return (new BASE64Encoder()).encode(cipher.doFinal(str.getBytes(StandardCharsets.UTF_8))); } private String decrypt(byte[] key, byte[] iv, String str,String cipherType,String keySpec) throws Exception { Cipher cipher = initCipher(Cipher.DECRYPT_MODE,key,iv,cipherType,keySpec); return new String(cipher.doFinal((new BASE64Decoder()).decodeBuffer(str))); } public static Cipher initCipher(int type, byte[] key, byte[] iv, String cipherType,String keySpec) { try { SecureRandom sr = new SecureRandom(); DESedeKeySpec dks = new DESedeKeySpec(key);// 生成24位密钥 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(keySpec);// 实例化密钥生成器 SecretKey secureKey = keyFactory.generateSecret(dks); IvParameterSpec ips = new IvParameterSpec(iv); Cipher cipher = Cipher.getInstance(cipherType); cipher.init(type, secureKey, ips, sr); return cipher; } catch (Exception e) { e.printStackTrace(); return null; } }
使用java完成DES加密
于 2020-01-15 13:55:04 首次发布