package testcode.crypto;
import org.apache.commons.codec.digest.DigestUtils;
import testcode.util.HexUtil;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class WeakMessageDigest {
public static void main(String[] args) throws NoSuchAlgorithmException {
MessageDigest md2Digest = MessageDigest.getInstance("MD2");
md2Digest.update("123".getBytes());
printHex(md2Digest.digest());
MessageDigest md5Digest = MessageDigest.getInstance("MD5");
md5Digest.update("123".getBytes());
printHex(md5Digest.digest());
MessageDigest sha1Digest = MessageDigest.getInstance("SHA");
sha1Digest.update("123".getBytes());
printHex(sha1Digest.digest());
MessageDigest sha1Digest2 = MessageDigest.getInstance("SHA1");
sha1Digest2.update("123".getBytes());
printHex(sha1Digest2.digest());
MessageDigest sha1Digest3 = MessageDigest.getInstance("SHA-1");
sha1Digest3.update("123".getBytes());
printHex(sha1Digest3.digest());
MessageDigest sha256Digest = MessageDigest.getInstance("SHA256"); //OK!
sha256Digest.update("123".getBytes());
printHex(sha256Digest.digest());
MessageDigest sha512Digest = MessageDigest.getInstance(getDigest()); //This parameter is unknown
sha512Digest.update("123".getBytes());
printHex(sha512Digest.digest());
apacheApiVariations();
}
public static void apacheApiVariations() {
printHex(DigestUtils.getMd2Digest().digest("123".getBytes()));
printHex(DigestUtils.getMd5Digest().digest("123".getBytes()));
printHex(DigestUtils.getDigest("md2").digest("123".getBytes()));
printHex(DigestUtils.getDigest("md5").digest("123".getBytes()));
DigestUtils.md2("123".getBytes());
DigestUtils.md5("123".getBytes());
System.out.println(DigestUtils.md2Hex("123".getBytes()));
System.out.println(DigestUtils.md5Hex("123".getBytes()));
printHex(DigestUtils.getSha1Digest().digest("123".getBytes()));
printHex(DigestUtils.getShaDigest().digest("123".getBytes()));
printHex(DigestUtils.getDigest("sha1").digest("123".getBytes()));
printHex(DigestUtils.getDigest("sha-1").digest("123".getBytes()));
DigestUtils.sha1("123".getBytes());
DigestUtils.sha("123".getBytes());
DigestUtils.sha1Hex("123".getBytes());
DigestUtils.shaHex("123".getBytes());
printHex(DigestUtils.getDigest("sha256").digest("123".getBytes())); //OK!
printHex(DigestUtils.getDigest(getDigest()).digest("123".getBytes())); //Unknown
}
public static String getDigest() {
return "sha512";
}
private static void printHex(byte[] bytes) {
System.out.println(HexUtil.toString(bytes));
}
}