001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018package org.apache.commons.codec.digest; 019 020import java.security.MessageDigest; 021 022/** 023 * Standard {@link MessageDigest} algorithm names from the <cite>Java Cryptography Architecture Standard Algorithm Name 024 * Documentation</cite>. 025 * <p> 026 * This class is immutable and thread-safe. 027 * </p> 028 * <p> 029 * Java 8 and up: SHA-224. 030 * </p> 031 * <p> 032 * Java 9 and up: SHA3-224, SHA3-256, SHA3-384, SHA3-512. 033 * </p> 034 * 035 * @see <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#MessageDigest"> 036 * Java 6 Cryptography Architecture Standard Algorithm Name Documentation</a> 037 * @see <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#MessageDigest"> 038 * Java 7 Cryptography Architecture Standard Algorithm Name Documentation</a> 039 * @see <a href="http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest"> 040 * Java 8 Cryptography Architecture Standard Algorithm Name Documentation</a> 041 * @see <a href="http://download.java.net/java/jdk9/docs/technotes/guides/security/StandardNames.html#MessageDigest"> 042 * Java 9 Cryptography Architecture Standard Algorithm Name Documentation</a> 043 * 044 * @see <a href="http://dx.doi.org/10.6028/NIST.FIPS.180-4">FIPS PUB 180-4</a> 045 * @see <a href="http://dx.doi.org/10.6028/NIST.FIPS.202">FIPS PUB 202</a> 046 * @since 1.7 047 * @version $Id: MessageDigestAlgorithms.java 1744728 2016-05-20 12:55:58Z sebb $ 048 */ 049public class MessageDigestAlgorithms { 050 051 /** 052 * The MD2 message digest algorithm defined in RFC 1319. 053 */ 054 public static final String MD2 = "MD2"; 055 056 /** 057 * The MD5 message digest algorithm defined in RFC 1321. 058 */ 059 public static final String MD5 = "MD5"; 060 061 /** 062 * The SHA-1 hash algorithm defined in the FIPS PUB 180-2. 063 */ 064 public static final String SHA_1 = "SHA-1"; 065 066 /** 067 * The SHA-224 hash algorithm defined in the FIPS PUB 180-3. 068 * <p> 069 * Present in Oracle Java 8. 070 * </p> 071 * 072 * @since 1.11 073 */ 074 public static final String SHA_224 = "SHA-224"; 075 076 /** 077 * The SHA-256 hash algorithm defined in the FIPS PUB 180-2. 078 */ 079 public static final String SHA_256 = "SHA-256"; 080 081 /** 082 * The SHA-384 hash algorithm defined in the FIPS PUB 180-2. 083 */ 084 public static final String SHA_384 = "SHA-384"; 085 086 /** 087 * The SHA-512 hash algorithm defined in the FIPS PUB 180-2. 088 */ 089 public static final String SHA_512 = "SHA-512"; 090 091 /** 092 * The SHA3-224 hash algorithm defined in the FIPS PUB 202. 093 * <p> 094 * Likely to be included in Oracle Java 9 GA. 095 * </p> 096 * 097 * @since 1.11 098 */ 099 public static final String SHA3_224 = "SHA3-224"; 100 101 /** 102 * The SHA3-256 hash algorithm defined in the FIPS PUB 202. 103 * <p> 104 * Likely to be included in Oracle Java 9 GA. 105 * </p> 106 * 107 * @since 1.11 108 */ 109 public static final String SHA3_256 = "SHA3-256"; 110 111 /** 112 * The SHA3-384 hash algorithm defined in the FIPS PUB 202. 113 * <p> 114 * Likely to be included in Oracle Java 9 GA. 115 * </p> 116 * 117 * @since 1.11 118 */ 119 public static final String SHA3_384 = "SHA3-384"; 120 121 /** 122 * The SHA3-512 hash algorithm defined in the FIPS PUB 202. 123 * <p> 124 * Likely to be included in Oracle Java 9 GA. 125 * </p> 126 * 127 * @since 1.11 128 */ 129 public static final String SHA3_512 = "SHA3-512"; 130 131 /** 132 * Gets all constant values defined in this class. 133 * 134 * @return all constant values defined in this class. 135 * @since 1.11 136 */ 137 public static String[] values() { 138 // N.B. do not use a constant array here as that can be changed externally by accident or design 139 return new String[] { 140 MD2, MD5, SHA_1, SHA_224, SHA_256, SHA_384, SHA_512, SHA3_224, SHA3_256, SHA3_384, SHA3_512 141 }; 142 } 143 144 private MessageDigestAlgorithms() { 145 // cannot be instantiated. 146 } 147 148}