DES代码讲解

来源:互联网 发布:dracut命令安装linux 编辑:程序博客网 时间:2024/06/05 21:34
public class DESDemo {/* * DES加密介绍DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现。注意:DES加密和解密过程中,大于等于8位 */public static void main(String[] args) throws Exception {            // 明文              String str = "hello des";              // 密码              String password = "12345678";  //大于等于8位            String desc = DESUlits.doWork(str, password,0);              System.out.println("密文:" + desc);              // 解密              str = DESUlits.doWork(desc, password,1);              System.out.println("明文:" +str);  }}


加密和解密的工具类

public class DESUlits {/**      * 加密解密接口      * @param data      数据      * @param password  加密解密密码 必须8位字节      * @param flag      加密解密标志 0:加密 ,1:解密      * @return      */      public static String doWork(String data, String password,int flag) {          try {          //1.DES算法要求有一个可信任的随机数源            SecureRandom random = new SecureRandom();             //2.创建一个DESKeySpec对象            DESKeySpec desKey = new DESKeySpec(password.getBytes());             //3.创建一个密匙工厂            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");            //4.将DESKeySpec对象转换成SecretKey对象            SecretKey securekey = keyFactory.generateSecret(desKey);             //5.Cipher对象实际完成加密/解密操作            Cipher cipher = Cipher.getInstance("DES");              //加密               if(flag == 0){                //创建一个BASE64Encoder对象进行加密            sun.misc.BASE64Encoder base64encoder = new sun.misc.BASE64Encoder();            //用密匙初始化Cipher对象                cipher.init(Cipher.ENCRYPT_MODE, securekey, random);                  //进行加密操作                return base64encoder.encode(cipher.doFinal(data.getBytes("UTF-8")));              }else{             //解密            ////创建一个BASE64Decoder对象进行解密            sun.misc.BASE64Decoder base64decoder = new sun.misc.BASE64Decoder();                            byte[] encodeByte = base64decoder.decodeBuffer(data);                 //用密匙初始化Cipher对象                cipher.init(Cipher.DECRYPT_MODE, securekey, random);                 //执行解密操作                byte[] decoder = cipher.doFinal(encodeByte);                  return new String(decoder,"UTF-8");              }                        } catch (Exception e) {              e.printStackTrace();          }          return null;      }  }


原创粉丝点击