1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   * SOFTWARE.
18   */
19  
20  package com.liferay.portal.util;
21  
22  import com.liferay.portal.kernel.log.Log;
23  import com.liferay.portal.kernel.log.LogFactoryUtil;
24  import com.liferay.portal.kernel.util.Base64;
25  import com.liferay.portal.kernel.util.Digester;
26  
27  import java.io.UnsupportedEncodingException;
28  
29  import java.security.MessageDigest;
30  import java.security.NoSuchAlgorithmException;
31  
32  import org.apache.commons.codec.binary.Hex;
33  
34  /**
35   * <a href="DigesterImpl.java.html"><b><i>View Source</i></b></a>
36   *
37   * @author Brian Wing Shun Chan
38   *
39   */
40  public class DigesterImpl implements Digester {
41  
42      public String digest(String text) {
43          return digest(Digester.DIGEST_ALGORITHM, text);
44      }
45  
46      public String digest(String algorithm, String text) {
47          MessageDigest digester = null;
48  
49          try{
50              digester = MessageDigest.getInstance(algorithm);
51  
52              digester.update(text.getBytes(Digester.ENCODING));
53          }
54          catch (NoSuchAlgorithmException nsae) {
55              _log.error(nsae, nsae);
56          }
57          catch (UnsupportedEncodingException uee) {
58              _log.error(uee, uee);
59          }
60  
61          byte[] bytes = digester.digest();
62  
63          if (_BASE_64) {
64              return Base64.encode(bytes);
65          }
66          else {
67              return new String(Hex.encodeHex(bytes));
68          }
69      }
70  
71      private static final boolean _BASE_64 =
72          PropsValues.PASSWORDS_DIGEST_ENCODING.equals("base64");
73  
74      private static Log _log = LogFactoryUtil.getLog(Digester.class);
75  
76  }