DES加密和解密的JAVA实现方式
2017-03-09 00:00
399 查看
摘要: DES 全称为Data Encryption Standard即数据加密算法,它是IBM公司研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。DES算法是这样工作的:如Mode为加密,则用Key 去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。
测试结果:
import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * @author tangx * 测试des的加密与解密 */ public class TestDES { public static void main(String[] args) { // TODO Auto-generated method stub String source = "测试des加密"; String key = "123456781"; String result = encrypt(source, key); //加密结果 System.out.println(result); //解密 System.out.println(decrypt(result, key)); } /** * DES加密操作 * @param source 要加密的源 * @param key 约定的密钥 * @return */ public static String encrypt(String source,String key){ //强加密随机数生成器 SecureRandom random = new SecureRandom(); try { //创建密钥规则 DESKeySpec keySpec = new DESKeySpec(key.getBytes()); //创建密钥工厂 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); //按照密钥规则生成密钥 SecretKey secretKey = keyFactory.generateSecret(keySpec); //加密对象 Cipher cipher = Cipher.getInstance("DES"); //初始化加密对象需要的属性 cipher.init(Cipher.ENCRYPT_MODE, secretKey, random); //开始加密 byte[] result = cipher.doFinal(source.getBytes()); //Base64加密 return new BASE64Encoder().encode(result) ; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 解密 * @param cryptograph 密文 * @param key 约定的密钥 * @return */ public static String decrypt(String cryptograph,String key){ //强加密随机生成器 SecureRandom random = new SecureRandom(); try { //定义私钥规则 DESKeySpec keySpec = new DESKeySpec(key.getBytes()); //定义密钥工厂 SecretKeyFactory factory = SecretKeyFactory.getInstance("DES"); //按照密钥规则生成密钥 SecretKey secretkey = factory.generateSecret(keySpec); //创建加密对象 Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, secretkey, random); //Base64对 byte[] result = new BASE64Decoder().decodeBuffer(cryptograph); return new String(cipher.doFinal(result)); } catch (Exception e) { e.printStackTrace(); } return null; } }
测试结果:
相关文章推荐
- C#用DES加密JAVA用DES解密,JAVA用DES加密C#用DES解密的实现
- DES加密与解密的java实现
- Java使用Hutool实现AES、DES加密解密的方法
- Java 实现DES加密解密
- C#用DES加密JAVA用DES解密,JAVA用DES加密C#用DES解密的实现
- java使用DES加密方式,实现对数据的加密解密
- java实现基于PKCS7Padding填充方式的AES加解密
- C#DES加密,JavaDES解密,另转C#和Java实现Des完整代码
- java实现DES加密和解密
- java 实现 DES加密 解密算法
- java 实现md5加密的三种方式与解密
- JAVA实现DES加密和解密软件
- Java实现文件的DES加密与解密算法
- JAVA实现DES加密和解密
- AES 加密解密的JAVA实现方式【一】已调通
- Android DES加解密的两种实现方式 - Java DES与Android DES不兼容问题
- java实现基于PKCS5Padding填充方式的AES加解密
- java DES加密,解密算法实现
- java实现DES加密与解密,md5加密
- Java 利用document操作xml并实现DES加密和解密