六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 43|回复: 0

java 实现des加密!

[复制链接]

升级  52.67%

35

主题

35

主题

35

主题

秀才

Rank: 2

积分
129
 楼主| 发表于 2013-1-26 16:39:26 | 显示全部楼层 |阅读模式
DES.java   
   
   
   package    Lion.Security.Cryptography;   
   
   import    javax.crypto.Cipher;   
   import    javax.crypto.KeyGenerator;   
   import    javax.crypto.NoSuchPaddingException;   
   import    javax.crypto.SecretKey;   
   import    java.security.NoSuchAlgorithmException;   
   import    java.security.Security;   
   /**   
     *    DES加密的,文件中共有两个方法,加密、解密   
     *    @author    Lion   
     *    @author    www.lionsky.net   
     */   
   public    class    DES    {   
           private    String    Algorithm    =    "DES";   
           private    KeyGenerator    keygen;   
           private    SecretKey    deskey;   
           private    Cipher    c;   
           private    byte[]    cipherByte;   
   
           /**   
             *    初始化    DES    实例   
             */   
           public    DES()    {   
                       init();   
           }   
   
           public    void    init()    {   
                   Security.addProvider(new    com.sun.crypto.provider.SunJCE());   
                   try    {   
                                 keygen    =    KeyGenerator.getInstance(Algorithm);   
                                 deskey    =    keygen.generateKey();   
                                 c    =    Cipher.getInstance(Algorithm);   
                     }   
                     catch(NoSuchAlgorithmException    ex){   
                           ex.printStackTrace();   
                   }   
                     catch(NoSuchPaddingException    ex){   
                           ex.printStackTrace();   
                   }   
                 }   
   
           /**   
             *    对    String    进行加密   
             *    @param    str    要加密的数据   
             *    @return    返回加密后的    byte    数组   
             */   
             public    byte[]    createEncryptor(String    str)    {   
                   try    {   
                             c.init(Cipher.ENCRYPT_MODE,    deskey);   
                             cipherByte    =    c.doFinal(str.getBytes());   
                   }   
                   catch(java.security.InvalidKeyException    ex){   
                           ex.printStackTrace();   
                   }   
                   catch(javax.crypto.BadPaddingException    ex){   
                           ex.printStackTrace();   
                   }   
                   catch(javax.crypto.IllegalBlockSizeException    ex){   
                           ex.printStackTrace();   
                   }   
                   return    cipherByte;   
             }   
   
           /**   
             *    对    Byte    数组进行解密   
             *    @param    buff    要解密的数据   
             *    @return    返回加密后的    String   
             */   
             public    String    createDecryptor(byte[]    buff)    {   
                   try    {   
                         c.init(Cipher.DECRYPT_MODE,    deskey);   
                         cipherByte    =    c.doFinal(buff);   
                   }   
                   catch(java.security.InvalidKeyException    ex){   
                           ex.printStackTrace();   
                   }   
                   catch(javax.crypto.BadPaddingException    ex){   
                           ex.printStackTrace();   
                   }   
                   catch(javax.crypto.IllegalBlockSizeException    ex){   
                           ex.printStackTrace();   
                   }   
                   return    (new    String(cipherByte));   
             }   
   }   
   
      
   
   DES.jsp   
   
   
   <%@    page    c    %>   
   <jsp:useBean    id="DES"    scope="page"    class="Lion.Security.Cryptography.DES"    />   
   <html>   
   <head><title>DES    File</title></head>   
   
   <body    bgcolor="#FFFFFF">   
   <div    align="center"><center>   
   <%   
   String    Test    =    request.getParameter("Test");   
   if(Test==null    ||    Test.equals(""))    {   
   %>   
           <form    name="form"    method="post">   
           <input    type="text"    name="Test"    size="25"    value=""/>   
           <input    type="submit"    name="button"    value="    确定    "/>   
           </form>   
           <%   
   }else{   
                           out.println("加密前的数据:"+Test    +"<br/>");   
                           out.println("加密后的数据:"+DES.createEncryptor(Test)    +"<br/>");   
                           out.println("解密后的数据:"+DES.createDecryptor(DES.createEncryptor(Test))    +"<br/>");   
               }   
           %>   
   </center></div>   
   </body>   
   </html>   
   
  Top
6 楼laughsmile(海边的星空) 回复于 2005-06-08 21:09:56 得分 60
import    javax.crypto.*;   
   import    java.io.*;   
   import    javax.crypto.spec.*;   
   import    java.security.spec.*;   
   
   public    class    DesEncrypter    {   
                   Cipher    ecipher;   
                   Cipher    dcipher;   
            
                   //    8-byte    Salt   
                   byte[]    salt    =    {   
                           (byte)0xA9,    (byte)0x9B,    (byte)0xC8,    (byte)0x32,   
                           (byte)0x56,    (byte)0x35,    (byte)0xE3,    (byte)0x03   
                   };   
            
                   //    Iteration    count   
                   int    iterationCount    =    19;   
            
                   DesEncrypter(String    passPhrase)    {   
                           try    {   
                                   //    Create    the    key   
                                   KeySpec    keySpec    =    new    PBEKeySpec(passPhrase.toCharArray(),    salt,    iterationCount);   
                                   SecretKey    key    =    SecretKeyFactory.getInstance(   
                                           "PBEWithMD5AndDES").generateSecret(keySpec);   
                                   ecipher    =    Cipher.getInstance(key.getAlgorithm());   
                                   dcipher    =    Cipher.getInstance(key.getAlgorithm());   
            
                                   //    Prepare    the    parameter    to    the    ciphers   
                                   AlgorithmParameterSpec    paramSpec    =    new    PBEParameterSpec(salt,    iterationCount);   
            
                                   //    Create    the    ciphers   
                                   ecipher.init(Cipher.ENCRYPT_MODE,    key,    paramSpec);   
                                   dcipher.init(Cipher.DECRYPT_MODE,    key,    paramSpec);   
                           }    catch    (java.security.InvalidAlgorithmParameterException    e)    {   
                           }    catch    (java.security.spec.InvalidKeySpecException    e)    {   
                           }    catch    (javax.crypto.NoSuchPaddingException    e)    {   
                           }    catch    (java.security.NoSuchAlgorithmException    e)    {   
                           }    catch    (java.security.InvalidKeyException    e)    {   
                           }   
                   }   
            
                   public    String    encrypt(String    str)    {   
                           try    {   
                                   //    Encode    the    string    into    bytes    using    utf-8   
                                   byte[]    utf8    =    str.getBytes("UTF8");   
            
                                   //    Encrypt   
                                   byte[]    enc    =    ecipher.doFinal(utf8);   
            
                                   //    Encode    bytes    to    base64    to    get    a    string   
                                   return    new    sun.misc.BASE64Encoder().encode(enc);   
                           }    catch    (javax.crypto.BadPaddingException    e)    {   
                           }    catch    (IllegalBlockSizeException    e)    {   
                           }    catch    (UnsupportedEncodingException    e)    {   
                           }    catch    (java.io.IOException    e)    {   
                           }   
                           return    null;   
                   }   
            
                   public    String    decrypt(String    str)    {   
                           try    {   
                                   //    Decode    base64    to    get    bytes   
                                   byte[]    dec    =    new    sun.misc.BASE64Decoder().decodeBuffer(str);   
            
                                   //    Decrypt   
                                   byte[]    utf8    =    dcipher.doFinal(dec);   
            
                                   //    Decode    using    utf-8   
                                   return    new    String(utf8,    "UTF8");   
                           }    catch    (javax.crypto.BadPaddingException    e)    {   
                           }    catch    (IllegalBlockSizeException    e)    {   
                           }    catch    (UnsupportedEncodingException    e)    {   
                           }    catch    (java.io.IOException    e)    {   
                           }   
                           return    null;   
                   }   
   
   
           //    Here    is    an    example    that    uses    the    class   
            
   public    static    void    main(String    s[])   
   {   
   try    {   
                   //    Create    encrypter/decrypter    class   
                   DesEncrypter    encrypter    =    new    DesEncrypter("crypto");   
            
                   //    Encrypt   
                   String    encrypted    =    encrypter.encrypt("11");   
   System.out.println(encrypted);   
                   //    Decrypt   
                   String    decrypted    =    encrypter.decrypt(encrypted);   
   System.out.println(decrypted);   
           }    catch    (Exception    e)    {e.printStackTrace(); }   
   
   }   
   }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表