• Java中创建口令密钥的代码


    加密时所用的密钥是根据给定的口令生成的。为了增加破解的难度,PBE还使用一个随机数(称为盐)和口令组合起来加密文件。此外还进行重复计算(迭代)。

    1加密

    public static void jiami(String kouling) throws Exception {
      char[] passwd = kouling.toCharArray();
      PBEKeySpec pbks = new PBEKeySpec(passwd);

    /**

    getInstance()方法的参数是一个字符串,指定口令加密算法,如PBEWithMD5AndDESPBEWithHmacSHA1AndDESede等。JCE中已经实现的是PBEWithMD5AndDES

    **/
      SecretKeyFactory kf = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
      SecretKey k = kf.generateSecret(pbks);
      byte[] salt = new byte[8];
      Random r = new Random();
      r.nextBytes(salt);
      Cipher cp = Cipher.getInstance("PBEWithMD5AndDES");
      PBEParameterSpec ps = new PBEParameterSpec(salt, 1000);
      cp.init(Cipher.ENCRYPT_MODE, k, ps);
      String mima = "liaomin999";
      byte ptext[] = mima.getBytes("UTF8");
      byte ctext[] = cp.doFinal(ptext);
      // 将盐和加密结果合并在一起保存为密文
      FileOutputStream f = new FileOutputStream("c://a.dat");
      f.write(salt);
      f.write(ctext);

     }

    2解密

    public static void jiemi(String kouling) throws Exception {
      char[] passwd=kouling.toCharArray( );
            PBEKeySpec pbks=new PBEKeySpec(passwd);
            SecretKeyFactory kf=
            SecretKeyFactory.getInstance("PBEWithMD5AndDES");
            SecretKey k=kf.generateSecret(pbks);

            byte[] salt=new byte[8];
            FileInputStream f=new FileInputStream("c://a.dat");
            f.read(salt);

            int num=f.available();
            byte[ ] ctext=new byte[num];         
            f.read(ctext);

            Cipher cp=Cipher.getInstance("PBEWithMD5AndDES");
            PBEParameterSpec ps=new PBEParameterSpec(salt,1000);
            cp.init(Cipher.DECRYPT_MODE, k,ps);
            byte ptext[]=cp.doFinal(ctext);
            // 显示解密结果
            System.out.println(new String(ptext,"utf-8"));

     }

    public static void main(String[] args) throws Exception {
      jiami("liaomin");
      jiemi("liaomin");
     }

  • 相关阅读:
    Jenkins遇到问题一:jenkins配置权限不对导致无法登陆或者空白页面解决办法
    翻页功能的测试用例
    Jenkins学习二:Jenkins安装与配置
    Jenkins学习一:Jenkins是什么?
    Java MyEclipse下Ant build.xml简单实例详解
    Linux环境中Openfire安装指南
    Linux下查看文件和文件夹大小
    Tsung测试openfire服务器
    Windows环境中Openfire与Spark安装与配置指南
    解决-bash: lsb_release: command not found
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331888.html
Copyright © 2020-2023  润新知