隨筆-57  評論-202  文章-17  trackbacks-0

                從JDK1.4開始,SUN提供了JCE包,可以實現多種加密算法。下面是我的一個用JCE進行DES加密解密的程序:

          package sample;

          import java.security.
          *;
          import javax.crypto.
          *;

          /**
           * <p>Title: </p>
           *
           * <p>Description: </p>
           *
           * <p>Copyright: Copyright (c) 2005</p>
           *
           * <p>Company: </p>
           *
           * @author George Hill
           * @version 1.0
           
          */


          public class Test {
            
            
          // 加密使用的Key
            private SecretKey key;
            
            
          // 加密算法,JCE可用DES,DESede和Blowfish
            private static final String algorithm = "DES";
            
            
          public Test() throws NoSuchAlgorithmException {
              KeyGenerator generator 
          = KeyGenerator.getInstance(algorithm);
              key 
          = generator.generateKey();
            }

            
            
          /**
             * 利用DES算法加密
             * @param s String 需要加密的字符串
             * @return String 加密后的字符串
             * @throws Exception
             
          */

            
          public String encryptData(String s) throws Exception {
              Cipher c 
          = Cipher.getInstance(algorithm);
              c.init(Cipher.ENCRYPT_MODE, key);

              
          return new String(c.doFinal(s.getBytes()));
            }

            
            
          /**
             * 利用DES算法解密
             * @param s String 需要解密的字符串
             * @return String 解密后的字符串
             * @throws Exception
             
          */

            
          public String decryptData(String s) throws Exception {
              Cipher c 
          = Cipher.getInstance(algorithm);
              c.init(Cipher.DECRYPT_MODE, key);

              
          return new String(c.doFinal(s.getBytes()));
            }

            
            
          /**
             * 測試程序
             * @param args String[]
             * @throws Exception
             
          */

            
          public static void main(String[] args) throws Exception {
              String s 
          = "Hello";
              Test test 
          = new Test();
              String encrypt 
          = test.encryptData(s);
              System.
          out.println(encrypt);
              String decrypt 
          = test.decryptData(encrypt);
              System.
          out.println(decrypt);
            }

          }



                在實際的使用中,往往需要對加密后的byte數組進行轉換,可以自己實現轉換,或者用一些第三方的API。
          posted on 2005-05-18 11:55 小米 閱讀(2638) 評論(4)  編輯  收藏 所屬分類: Java

          評論:
          # re: 如何使用JCE的DES進行加密解密 2005-07-24 20:17 | lzcarl
          高手,你好
          我最近也在用jce寫程序
          可配置上出了問題
          用KeyGenerator不管生成什么類型的key
          都提示NoSuchAlgorithm
          請問高手是怎么配置的啊
          謝謝。  回復  更多評論
            
          # re: 如何使用JCE的DES進行加密解密 2005-07-25 09:57 | 小米
          高手不敢當。請問你設定的Algorithm是什么?我想錯誤信息應該提示的很清楚,你可以具體看看錯誤信息的意思,或者查查相關的文檔。  回復  更多評論
            
          # re: 如何使用JCE的DES進行加密解密 2005-07-25 15:24 | lzcarl
          我設定的algorithm是des
          昨天在jbuilder下還能用
          換到eclipse下一樣的設定方法就不行了
          郁悶  回復  更多評論
            
          # re: 如何使用JCE的DES進行加密解密 2005-07-25 16:13 | 小米
          JBuilder和Eclipse下使用的JDK是否是一樣的?你可以把你的源代碼貼上來看看么?  回復  更多評論
            
          主站蜘蛛池模板: 娱乐| 三原县| 莱州市| 喀喇沁旗| 青海省| 景洪市| 遂宁市| 藁城市| 江源县| 安徽省| 古田县| 沙坪坝区| 湄潭县| 泸西县| 高尔夫| 赣榆县| 吉林省| 彰化县| 临西县| 合水县| 威信县| 电白县| 东海县| 玉门市| 沁阳市| 手游| 砚山县| 唐河县| 柞水县| 天长市| 法库县| 彭山县| 武乡县| 建阳市| 普安县| 阿克陶县| 长治县| 娄烦县| 睢宁县| 普陀区| 临猗县|