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="https://docs.oracle.com/javase/9/docs/specs/security/standard-names.html#messagedigest-algorithms"> 042 * Java 9 Cryptography Architecture Standard Algorithm Name Documentation</a> 043 * @see <a href="https://docs.oracle.com/javase/10/docs/specs/security/standard-names.html#messagedigest-algorithms"> 044 * Java 10 Cryptography Architecture Standard Algorithm Name Documentation</a> 045 * @see <a href="https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html#messagedigest-algorithms"> 046 * Java 11 Cryptography Architecture Standard Algorithm Name Documentation</a> 047 * @see <a href="https://docs.oracle.com/en/java/javase/12/docs/specs/security/standard-names.html#messagedigest-algorithms"> 048 * Java 12 Cryptography Architecture Standard Algorithm Name Documentation</a> 049 * 050 * @see <a href="http://dx.doi.org/10.6028/NIST.FIPS.180-4">FIPS PUB 180-4</a> 051 * @see <a href="http://dx.doi.org/10.6028/NIST.FIPS.202">FIPS PUB 202</a> 052 * @since 1.7 053 */ 054public class MessageDigestAlgorithms { 055 056 /** 057 * The MD2 message digest algorithm defined in RFC 1319. 058 */ 059 public static final String MD2 = "MD2"; 060 061 /** 062 * The MD5 message digest algorithm defined in RFC 1321. 063 */ 064 public static final String MD5 = "MD5"; 065 066 /** 067 * The SHA-1 hash algorithm defined in the FIPS PUB 180-2. 068 */ 069 public static final String SHA_1 = "SHA-1"; 070 071 /** 072 * The SHA-224 hash algorithm defined in the FIPS PUB 180-3. 073 * <p> 074 * Present in Oracle Java 8. 075 * </p> 076 * 077 * @since 1.11 078 */ 079 public static final String SHA_224 = "SHA-224"; 080 081 /** 082 * The SHA-256 hash algorithm defined in the FIPS PUB 180-2. 083 */ 084 public static final String SHA_256 = "SHA-256"; 085 086 /** 087 * The SHA-384 hash algorithm defined in the FIPS PUB 180-2. 088 */ 089 public static final String SHA_384 = "SHA-384"; 090 091 /** 092 * The SHA-512 hash algorithm defined in the FIPS PUB 180-2. 093 */ 094 public static final String SHA_512 = "SHA-512"; 095 096 /** 097 * The SHA3-224 hash algorithm defined in the FIPS PUB 202. 098 * <p> 099 * Included starting in Oracle Java 9 GA. 100 * </p> 101 * 102 * @since 1.11 103 */ 104 public static final String SHA3_224 = "SHA3-224"; 105 106 /** 107 * The SHA3-256 hash algorithm defined in the FIPS PUB 202. 108 * <p> 109 * Included starting in Oracle Java 9 GA. 110 * </p> 111 * 112 * @since 1.11 113 */ 114 public static final String SHA3_256 = "SHA3-256"; 115 116 /** 117 * The SHA3-384 hash algorithm defined in the FIPS PUB 202. 118 * <p> 119 * Included starting in Oracle Java 9 GA. 120 * </p> 121 * 122 * @since 1.11 123 */ 124 public static final String SHA3_384 = "SHA3-384"; 125 126 /** 127 * The SHA3-512 hash algorithm defined in the FIPS PUB 202. 128 * <p> 129 * Included starting in Oracle Java 9 GA. 130 * </p> 131 * 132 * @since 1.11 133 */ 134 public static final String SHA3_512 = "SHA3-512"; 135 136 /** 137 * Gets all constant values defined in this class. 138 * 139 * @return all constant values defined in this class. 140 * @since 1.11 141 */ 142 public static String[] values() { 143 // N.B. do not use a constant array here as that can be changed externally by accident or design 144 return new String[] { 145 MD2, MD5, SHA_1, SHA_224, SHA_256, SHA_384, SHA_512, SHA3_224, SHA3_256, SHA3_384, SHA3_512 146 }; 147 } 148 149 private MessageDigestAlgorithms() { 150 // cannot be instantiated. 151 } 152 153}