• 用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));

             }

      } 

  • 相关阅读:
    [翻译]windows下 连接到 bitnami的phpmyadmin
    Redmine 和GitBlit仓库服务器整合
    Xshell出现要继续使用此程序必须应用到最新的更新或使用新版本
    Codeigniter 列出所有控制器和控制器的方法(类似路由列表)
    FastStone Capture 文件名设置小记录
    [转]sourceforge文件下载过慢
    Cacti 添加 CPU 监听
    Cacti 发送警告邮件
    尝试让Virtualbox的Ubuntu可以调整分辨率
    Html5+离线打包创建本地消息
  • 原文地址:https://www.cnblogs.com/qiaoxu/p/3985619.html
Copyright © 2020-2023  润新知