zoukankan      html  css  js  c++  java
  • Java中创建对称密钥的代码

    1 加密

    public static byte[] jiami() throws Exception
     {
      //密钥生成器
      KeyGenerator key=KeyGenerator.getInstance("DESede");
      /**初始化密钥生成器
       * 该步骤一般指定密钥的长度。如果该步骤省略的话,
       * 会根据算法自动使用默认的密钥长度。指定长度时,
       * 若第一步密钥生成器使用的是“DES”算法,则密钥长度必须是56位;
       * 若是“DESede”,则可以是112或168位,其中112位有效;若是“AES”,
       * 可以是128, 192或256位;若是“Blowfish”,则可以是32至448之间可以被8整除的数;
       * “HmacMD5”和“HmacSHA1”默认的密钥长度都是64个字节
       */
      key.init(168);
      //生成密钥
      SecretKey secret=key.generateKey();
      //生成一个密钥文件 miyao.bat 以后人家需要解密 你就提供他一个文件
      FileOutputStream s=new FileOutputStream("c://miyao.bat");
      ObjectOutputStream st=new ObjectOutputStream(s);
      st.writeObject(secret);
      //工厂模式获取Cipher实例 密码器
      Cipher cp=Cipher.getInstance("DESede");
      //初始化cipher ENCRYPT_MODE表示加密DECRYPT_MODE解密  后面一个参数是密钥
      cp.init(Cipher.ENCRYPT_MODE, secret);
      //定义一个明文
      String pwd="liaomin999";
      //获取字符串的utf-8字节码
      byte[] by=pwd.getBytes("utf-8");
      //对字节码机密 miby就是加密后的字节码
      byte[] miby=cp.doFinal(by);
       //获取密文字符串
      return miby;
     }

    2解密

    public static String jiemi(byte[] miwen) throws Exception
     {
      //通过提供的密钥文件 获取密钥对象 进行解密
      FileInputStream s=new FileInputStream("c://miyao.bat");
      ObjectInputStream st=new ObjectInputStream(s);
      SecretKey secret=(SecretKey)st.readObject();
      //工厂模式获取Cipher实例 密码器
      Cipher cp=Cipher.getInstance("DESede");
      //初始化cipher ENCRYPT_MODE表示加密DECRYPT_MODE解密  后面一个参数是密钥
      cp.init(Cipher.DECRYPT_MODE, secret);

      //对密文字节码进行解密 如果密码写入文件可以使用文件流读写成一个数组
      byte[] miby=cp.doFinal(miwen);
       //获取密文字符串
      String minwen=new String(miby,"utf-8");
      return minwen;
     }

    public static void main(String[] args) throws Exception {
      
      byte[] miwen=jiami();
      String minwen=jiemi(miwen);
      System.out.println(minwen);
     }

  • 相关阅读:
    vb6 控件未注册问题解决
    Collection of algorithm for sorting. 常见排序算法集(二)
    Unity中uGUI的多分辨率处理
    大型站点技术架构PDF阅读笔记(一):
    GTK入门学习:glade的介绍
    java io (java输入输出流)具体解释
    python类的继承
    Python基础二--基本控制语句
    restlet Framework2.2和2.3版本号的对照
    crm创建团队设置团队的业务部门
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331889.html
Copyright © 2011-2022 走看看