java的des加密

转载 2013年12月05日 21:28:34

工作中用到的,希望对大家有帮助.

 

 

  1. import java.security.Key;  
  2. import java.security.spec.AlgorithmParameterSpec;  
  3.   
  4. import javax.crypto.Cipher;  
  5. import javax.crypto.SecretKeyFactory;  
  6. import javax.crypto.spec.DESKeySpec;  
  7. import javax.crypto.spec.IvParameterSpec;  
  8.   
  9. import sun.misc.BASE64Decoder;  
  10. import sun.misc.BASE64Encoder;  
  11.   
  12.   
  13.   
  14. public class CryptoTools {  
  15.     private static final String key_ = "ising@ws";   //  
  16.     private static final byte [] DESkey = key_.getBytes();//设置密钥,略去  
  17.     private static final byte[] DESIV = { (byte)0x12,(byte0x34, (byte)0x56, (byte)0x78, (byte)0x90,  
  18.             (byte)0xAB, (byte)0xCD,(byte0xEF };//设置向量,略去  
  19.   
  20.     private static AlgorithmParameterSpec iv =null;//加密算法的参数接口,IvParameterSpec是它的一个实现  
  21.     private static Key key =null;  
  22.       
  23.     public  CryptoTools() throws  Exception {  
  24.          DESKeySpec keySpec = new DESKeySpec(DESkey);//设置密钥参数  
  25.          iv = new IvParameterSpec(DESIV);//设置向量  
  26.          SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");//获得密钥工厂  
  27.          key = keyFactory.generateSecret(keySpec);//得到密钥对象  
  28.   
  29.     }  
  30.   
  31.     public  String encode(String data) throws Exception {  
  32.         Cipher enCipher  =  Cipher.getInstance("DES/CBC/PKCS5Padding");//得到加密对象Cipher  
  33.         enCipher.init(Cipher.ENCRYPT_MODE,key,iv);//设置工作模式为加密模式,给出密钥和向量  
  34.         byte[] pasByte = enCipher.doFinal(data.getBytes("utf-8"));  
  35.         BASE64Encoder base64Encoder = new BASE64Encoder();  
  36.         return base64Encoder.encode(pasByte);  
  37.     }  
  38.   
  39.     public  String decode(String data) throws Exception{  
  40.         Cipher deCipher   =  Cipher.getInstance("DES/CBC/PKCS5Padding");  
  41.         deCipher.init(Cipher.DECRYPT_MODE,key,iv);  
  42.         BASE64Decoder base64Decoder = new BASE64Decoder();  
  43.         byte[] pasByte=deCipher.doFinal(base64Decoder.decodeBuffer(data));  
  44.         return new String(pasByte,"UTF-8");  
  45.     }  
  46.     public static void main(String[] args) throws Exception{  
  47.         String value = "hello";  
  48.         CryptoTools tools =new  CryptoTools();  
  49.         System.out.println(tools.encode(value));  
  50.         System.out.println("解密"+tools.decode(tools.encode(value)));  
  51.     }  
  52.   
  53. }   
  54. }  

 

 

修改后的:

 

  1. public String encode(String data) throws Exception   
  2.     {  
  3.         byte [] DESkey = key_.getBytes();  
  4.         byte[] DESIV = { (byte)0x12,(byte0x34, (byte)0x56, (byte)0x78, (byte)0x90,(byte)0xAB, (byte)0xCD,(byte0xEF  };  
  5.         DESKeySpec keySpec = new DESKeySpec(DESkey);  
  6.         iv = new IvParameterSpec(DESIV);  
  7.         SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");  
  8.         key = keyFactory.generateSecret(keySpec);  
  9.         SecureRandom sr = new SecureRandom();   
  10.         Cipher enCipher = Cipher.getInstance("DES");  
  11.         enCipher.init(Cipher.ENCRYPT_MODE, key,sr);  
  12.         byte[] pasByte = enCipher.doFinal(data.getBytes("utf-8"));  
  13.         BASE64Encoder base64Encoder = new BASE64Encoder();  
  14.         return base64Encoder.encode(pasByte);  
  15.     }  

2009-04-30

Java DES 加密和解密算法的使用

DES简介: DES算法全称为Data Encryption Standard,即数据加密算法,它是IBM公司于1975年研究成功并公开发表的。...
  • kalision
  • kalision
  • 2014年11月03日 10:16
  • 1793

JAVA实现DES加密和解密

JAVA实现DES加密、JAVA实现DES解密
  • xinxin19881112
  • xinxin19881112
  • 2015年07月17日 16:30
  • 6412

JAVA实现DES加密

DES全称为DataEncryption Standard,即数据加密标准,是一种对称加密算法!DES加密介绍      DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。D...
  • liujiahan629629
  • liujiahan629629
  • 2016年05月18日 17:09
  • 7057

java加解密之DES多种使用方式

最近逆向分析中,常常遇到加解密的内容,接触得比较多的加解密算法一般有对称的DES和AES,非对称的RSA,单向的MD5等。 这里就DES的使用研究进行一个随笔记录,并不会说其实现原理,原理可以自行百度...
  • qq_18870023
  • qq_18870023
  • 2016年08月11日 15:04
  • 11685

解决java和C语言之间DES加解密不一致的问题。

解决java和C语言之间DES加解密不一致的问题。 C实现des加解密方式用的是openssl的。 下面的类,直接copy下来,直接运行DESUtil类就行。 base64编码 package c...
  • beijixingtianyake
  • beijixingtianyake
  • 2015年09月25日 15:07
  • 2071

Java 通用的DES加密工具类的实现

由于:java端对 DES加密算法默认的死EBC所以我们要手动的把其转化为CBC 保持一致的因素有三个 :1.密钥 (kingsfykj) 2.偏移量 (IV) 3.输入 import sun.m...
  • z69183787
  • z69183787
  • 2015年11月23日 14:12
  • 2661

java DES加密解密文件

本文转自:http://blog.csdn.net/springsky_/article/details/7873909 在android开发中或者java开发中,经常用一些加密或者解密文件的,下...
  • Jerome_XX
  • Jerome_XX
  • 2013年12月05日 17:36
  • 2251

c#与java DES加密互转问题

c#与java DES加密互转问题
  • handerhuo
  • handerhuo
  • 2017年04月01日 10:30
  • 905

基于java类库的DES加密算法实现

真正的核心代码就是调用java类库实现的那部分加密部分核心代码 //Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance("DES"); //用密匙初...
  • super_cui
  • super_cui
  • 2017年04月26日 18:54
  • 335

JAVA实现三重DES加密软件

三重DES加密算法安全性较高,该软件仅仅能加密8字节倍数长度的文件,后续将会持续开发。...
  • smilematch
  • smilematch
  • 2015年12月13日 11:22
  • 920
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java的des加密
举报原因:
原因补充:

(最多只允许输入30个字)