zoukankan      html  css  js  c++  java
  • 用Java实现3DES

    3DES,即三重DES,是DES的加强版,也是DES的一个更安全的变形。它使用3个56位(共168位)的密钥对数据进行三次加密,和DES相比,安全性得到了较大的提高。

    实际上,3DES是一个过渡的加密算法。1999年,NIST将3-DES指定为DES向AES过渡的加密标准。

    3DES以DES为基本模块,通过组合分组方法设计出分组加密算法。若三个密钥互不相同,本质上就相当于用一个长为168位的密钥进行加密,大大加强了数据的安全性。

    若数据对安全性要求不高,可以让其中的两个密钥相等,这样,密钥的有效长度也有112位。

    在Java的加密体系中,使用3DES非常简单,程序结构和使用DES时相同,只不过在初始化时将算法名称由"DES"改为"DESede"即可。

    下列程序基本原理和P12_01相同,只不过将加密和解密过程写在一起。

    import java.security.Security;

      import javax.crypto.Cipher; 

    import javax.crypto.KeyGenerator; 

    import javax.crypto.SecretKey;  

    public class P12_02   {       

           public static void main(String[] args) throws Exception  {

                  //KeyGenerator提供对称密钥生成器的功能,支持各种算法        

                 KeyGenerator keygen;         

                 //SecretKey负责保存对称密钥         

                 SecretKey deskey;         

                //Cipher负责完成加密或解密工作      

                Cipher c;                

               Security.addProvider(new com.sun.crypto.provider.SunJCE());        

                //实例化支持3DES算法的密钥生成器,算法名称用DESede      

               keygen = KeyGenerator.getInstance("DESede");         

               //生成密钥         

              deskey = keygen.generateKey();        

                //生成Cipher对象,指定其支持3DES算法      

               c = Cipher.getInstance("DESede");                      

               String msg = "郭克华_安全编程技术";      

               System.out.println("明文是:" + msg);               

               //根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式   

               c.init(Cipher.ENCRYPT_MODE, deskey);         

               byte[] src = msg.getBytes();         

              //加密,结果保存进enc

              byte[] enc = c.doFinal(src);

              System.out.println("密文是:" + new String(enc));

              //根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式

              c.init(Cipher.DECRYPT_MODE, deskey);

              //解密,结果保存进dec

              byte[] dec = c.doFinal(enc);

              System.out.println("解密后的结果是:"+ new String(dec));

             }

      } 

  • 相关阅读:
    你不知道的JavaScript(上)this和对象原型(二)
    hihocoder 1566 皇室成员的名字
    csu 1756: Prime
    csu 1770: 按钮控制彩灯实验
    csu 1898: 复盘拉火车
    csu 1901: 赏赐 OR 灾难
    csu 1909: Perfect Chocolate
    csu 1958: 数字游戏
    symfony2 环境搭建笔记
    php preg_match($p, $str, $match)方法简介
  • 原文地址:https://www.cnblogs.com/qiaoxu/p/3985619.html
Copyright © 2011-2022 走看看