1 /*
2 * Copyright �, Aegeus Technology Limited.
3 * All rights reserved.
4 */
5 package jsdsi.util;
6
7 import java.security.MessageDigest;
8 import java.security.NoSuchAlgorithmException;
9 import java.security.NoSuchProviderException;
10
11 import jsdsi.JsdsiRuntimeException;
12
13 /***
14 * Utility class for MessageDigests
15 *
16 * @author Sean Radford
17 * @version $Revision: 1.4 $ $Date: 2004/11/08 12:08:08 $
18 */
19 public class DigestUtils {
20
21 /***
22 *
23 */
24 private DigestUtils() {
25 super();
26 }
27
28 /***
29 * Return a java.security.MessageDigest
30 * @param digest a DigestAlgoEnum representing the type of digest sought
31 * @return the MessageDigest
32 * @throws jsdsi.JsdsiRuntimeException on error
33 */
34 public static MessageDigest getDigest(DigestAlgoEnum digest) {
35 return getDigest(digest, null);
36 }
37
38 /***
39 * Return a java.security.MessageDigest
40 * @param digest a DigestAlgoEnum representing the type of digest sought
41 * @param provider the Provider to use
42 * @return the MessageDigest
43 * @throws jsdsi.JsdsiRuntimeException on error
44 */
45 public static MessageDigest getDigest(DigestAlgoEnum digest,
46 String provider) {
47 if (digest == null) {
48 throw new IllegalArgumentException("name is NULL");
49 }
50 try {
51 if (provider==null) {
52 return MessageDigest.getInstance(digest.jdkName());
53 } else {
54 return MessageDigest.getInstance(digest.jdkName(), provider);
55 }
56 } catch (NoSuchAlgorithmException e) {
57 throw new JsdsiRuntimeException("No such MessageDigest algorythm: " + digest.jdkName());
58 } catch (NoSuchProviderException e) {
59 throw new JsdsiRuntimeException("No such MessageDigest provider: " + provider);
60 }
61 }
62
63 /***
64 * Calculate and return the MD5 digest of the given data
65 * @param bytes data to digest
66 * @return the digest
67 */
68 public static byte[] md5(byte[] bytes) {
69 MessageDigest digester = DigestUtils.getDigest(DigestAlgoEnum.MD5);
70 return digester.digest(bytes);
71 }
72
73 }
This page was automatically generated by Maven