zoukankan      html  css  js  c++  java
  • 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");
     }

  • 相关阅读:
    YUV图片旋转
    mac http&git代理配置
    iOS 如何保持线程一直在运转
    iOS 后台录音Tweak实现参考--stackoverflow
    NSTimer的精确度
    svn递归添加目录下面所有文件
    利用instruments工具查看其它app的性能
    iOS符号表手工还原
    Hbase的安装测试工作
    Hadoop集群中pig工具的安装过程记录
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331888.html
Copyright © 2011-2022 走看看