This project has retired. For details please refer to its Attic page.
DES xref
View Javadoc
1   /*
2    * Copyright 2001-2013 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   *
16   */
17  package org.apache.juddi.samples;
18  
19  import java.security.InvalidAlgorithmParameterException;
20  import java.security.InvalidKeyException;
21  import java.security.NoSuchAlgorithmException;
22  import java.security.spec.KeySpec;
23  import javax.crypto.BadPaddingException;
24  import javax.crypto.Cipher;
25  import javax.crypto.IllegalBlockSizeException;
26  import javax.crypto.KeyGenerator;
27  import javax.crypto.NoSuchPaddingException;
28  import javax.crypto.SecretKey;
29  import javax.crypto.SecretKeyFactory;
30  import javax.crypto.spec.DESedeKeySpec;
31  import org.apache.commons.codec.binary.Base64;
32  
33  /**
34   * This call is a simple test class that shows how to encrypt stuff in Java
35   * using 3DES
36   *
37   * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
38   */
39  public class DES {
40  
41          private static final String UNICODE_FORMAT = "UTF8";
42          public static final String DESEDE_ENCRYPTION_SCHEME = "DESede";
43          static private KeySpec ks;
44          static private SecretKeyFactory skf;
45          static private Cipher cipher;
46          static byte[] arrayBytes;
47          static private String myEncryptionKey;
48          static private String myEncryptionScheme;
49          static SecretKey key;
50  
51          public DES() throws Exception {
52          }
53  
54          public String encrypt(String clear) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
55                  String encryptedString = null;
56                  try {
57                          cipher.init(Cipher.ENCRYPT_MODE, key);
58                          byte[] plainText = clear.getBytes(UNICODE_FORMAT);
59                          byte[] encryptedText = cipher.doFinal(plainText);
60                          encryptedString = new String(Base64.encodeBase64(encryptedText), "UTF-8");
61                  } catch (Exception e) {
62                          e.printStackTrace();
63                  }
64                  return encryptedString;
65          }
66  
67          public String decrypt(String str) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
68                  String encryptedString = null;
69                  try {
70                          cipher.init(Cipher.DECRYPT_MODE, key);
71                          byte[] encryptedText = Base64.decodeBase64(str.getBytes("UTF-8"));
72                          byte[] clear = cipher.doFinal(encryptedText);
73                          encryptedString = new String(Base64.encodeBase64(clear), "UTF-8");
74                  } catch (Exception e) {
75                          e.printStackTrace();
76                  }
77                  return encryptedString;
78          }
79  
80          public static void main(String[] args) throws Exception {
81                  DES des = new DES();
82                  KeyGenerator kgen;
83                  try {
84                          kgen = KeyGenerator.getInstance(DESEDE_ENCRYPTION_SCHEME);
85                          kgen.init(168);
86                          SecretKey skey = kgen.generateKey();
87                          byte[] raw = skey.getEncoded();
88                          myEncryptionKey = new String(Base64.encodeBase64(raw), "UTF-8");
89                          myEncryptionScheme = DESEDE_ENCRYPTION_SCHEME;
90                          arrayBytes = myEncryptionKey.getBytes(UNICODE_FORMAT);
91                          ks = new DESedeKeySpec(arrayBytes);
92                          skf = SecretKeyFactory.getInstance(myEncryptionScheme);
93                          cipher = Cipher.getInstance(myEncryptionScheme);
94                          key = skf.generateSecret(ks);
95  
96                          System.out.println(new String(Base64.encodeBase64(raw), "UTF-8"));
97                          System.out.println(des.encrypt("password"));
98                          System.out.println(des.decrypt(des.encrypt("password")));
99                  } catch (Exception ex) {
100                         ex.printStackTrace();;
101                 }
102 
103         }
104 }