基于JAVA的DES加解密

1.获取密钥生成器

    KeyGenerator kg=KeyGenerator.getInstance("DESede");//“Blowfish”、“DES”、“DESede”、“HmacMD5”或“HmacSHA1”等

2.初始化密钥生成器

    kg.init(168);//DES算法为56位,DESede为112位或者168位(其中112位有效),AES为128,192,256位,Blowfish为32-448之间可以被8整除的,HmacMD5和HmacSHA1为64

3.生成密钥

    SecretKey k = kg.generateKey();

4.保存密钥

    4.1 序列化方式将密钥保存至文件中
    FileOutputStream  f = new FileOutputStream("key1.dat");
    ObjectOutputStream b = new  ObjectOutputStream(f);
    b.writeObject(k);
    4.2 字节流方式将密钥保存至文件中
    byte[ ] kb=k.getEncoded( );//将编码放在byte数组中
    FileOutputStream  f2=new FileOutputStream("key2.dat");
    f2.write(kb);

5.使用密钥对数据加密

     5.1 反序列化读取密钥
    FileInputStream f=new FileInputStream("key1.dat");
    ObjectInputStream b=new ObjectInputStream(f);
    Key k=(Key)b.readObject( );
    5.2 创建密码器(Cipher对象)
    Cipher cipher = Cipher.getInstance("DESede");
    5.3 初始化密码器
    cipher.init(Cipher.ENCRYPT_MODE,k);
    5.4 获取等待加密的明文
    String str = "zhutougg";
    byte[] ptext = str.getByte("UTF8");
    5.5 执行加密
    byte[] encodeStr = cipher.doFinal(ptext);

6.使用密钥对数据解密

    6.1 节字流读取密钥
    FileInputStream f=new FileInputStream("key2.dat");
    int num = f.available();
    byte[] keykb = new byte[num];
    f.read(keykb);
    SecretKeySpec key = new SecretKeySpec(keykb,"DESede");
    6.2 创建密码器
    Cipher cipher = Cipher.getInstance("DESede");
    6.3 初始化密码器
    cipher.init(Cipher.DECRYPT_MODE,key);
    6.4 执行解密
    byte[] decodeStr = cipher.doFinal(encodeStr);

欢迎大家加入小密圈,一起交流进步

zhutougg

继续阅读此作者的更多文章