Skip to content

Commit 6bea251

Browse files
authored
Merge pull request #7 from sainalshah/master
Issue 1818: Add support for SHA-256 and SHA-512
2 parents 912bc0f + 3a16edc commit 6bea251

File tree

5 files changed

+51
-3
lines changed

5 files changed

+51
-3
lines changed

src/main/java/org/carlspring/commons/encryption/EncryptionAlgorithmsEnum.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ public enum EncryptionAlgorithmsEnum
1010

1111
MD5("MD5", ".md5"),
1212

13-
SHA1("SHA-1", ".sha1");
13+
SHA1("SHA-1", ".sha1"),
14+
15+
SHA256("SHA-256", ".sha256"),
16+
17+
SHA512("SHA-512", ".sha512");
1418

1519

1620
private String extension;
@@ -55,6 +59,14 @@ public static EncryptionAlgorithmsEnum fromAlgorithm(String algorithm)
5559
{
5660
return SHA1;
5761
}
62+
if (algorithm.equals(SHA256.getAlgorithm()))
63+
{
64+
return SHA256;
65+
}
66+
if (algorithm.equals(SHA512.getAlgorithm()))
67+
{
68+
return SHA512;
69+
}
5870

5971
throw new IOException("Unsupported digest algorithm!");
6072
}

src/main/java/org/carlspring/commons/io/MultipleDigestInputStream.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ public class MultipleDigestInputStream
2323
{
2424

2525
private static final String[] DEFAULT_ALGORITHMS = { EncryptionAlgorithmsEnum.MD5.getAlgorithm(),
26-
EncryptionAlgorithmsEnum.SHA1.getAlgorithm() };
26+
EncryptionAlgorithmsEnum.SHA1.getAlgorithm(),
27+
EncryptionAlgorithmsEnum.SHA256.getAlgorithm(),
28+
EncryptionAlgorithmsEnum.SHA512.getAlgorithm() };
2729

2830
private Map<String, MessageDigest> digests = new LinkedHashMap<>();
2931

src/main/java/org/carlspring/commons/io/MultipleDigestOutputStream.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ public class MultipleDigestOutputStream extends FilterOutputStream
2222
{
2323

2424
private static final String[] DEFAULT_ALGORITHMS = { EncryptionAlgorithmsEnum.MD5.getAlgorithm(),
25-
EncryptionAlgorithmsEnum.SHA1.getAlgorithm() };
25+
EncryptionAlgorithmsEnum.SHA1.getAlgorithm(),
26+
EncryptionAlgorithmsEnum.SHA256.getAlgorithm(),
27+
EncryptionAlgorithmsEnum.SHA512.getAlgorithm() };
2628

2729
private Map<String, MessageDigest> digests = new LinkedHashMap<>();
2830

src/test/java/org/carlspring/commons/io/MultipleDigestInputStreamTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,20 @@ void testRead()
6868

6969
final String md5 = mdis.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.MD5.getAlgorithm());
7070
final String sha1 = mdis.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.SHA1.getAlgorithm());
71+
final String sha256 = mdis.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.SHA256.getAlgorithm());
72+
final String sha512 = mdis.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.SHA512.getAlgorithm());
7173

7274
assertEquals("693188a2fb009bf2a87afcbca95cfcd6", md5, "Incorrect MD5 sum!");
7375
assertEquals("6ed7c74babd1609cb11836279672ade14a8748c1", sha1, "Incorrect SHA-1 sum!");
76+
assertEquals("4716861ef13609f87cc9ba9d0f9cba6c1d7894dd21cfca2f965631d6933fffbb", sha256, "Incorrect SHA-256 sum!");
77+
assertEquals("d87e40392a0749350059a366f3cc2e72a008b5feae3a845528660649545d8388b86ad540498756d9c5eb9365c5940c4146a8f5302d1ed42a253b90f9ec438deb",
78+
sha512,
79+
"Incorrect SHA-512 sum!");
7480

7581
logger.debug("MD5: {}", md5);
7682
logger.debug("SHA1: {}", sha1);
83+
logger.debug("SHA1: {}", sha256);
84+
logger.debug("SHA1: {}", sha512);
7785
}
7886

7987
@Test

src/test/java/org/carlspring/commons/io/MultipleDigestOutputStreamTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,26 +54,42 @@ void testWrite()
5454

5555
final String md5 = mdos.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.MD5.getAlgorithm());
5656
final String sha1 = mdos.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.SHA1.getAlgorithm());
57+
final String sha256 = mdos.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.SHA256.getAlgorithm());
58+
final String sha512 = mdos.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.SHA512.getAlgorithm());
5759

5860
assertEquals("120ea8a25e5d487bf68b5f7096440019", md5, "Incorrect MD5 sum!");
5961
assertEquals("afa6c8b3a2fae95785dc7d9685a57835d703ac88", sha1, "Incorrect SHA-1 sum!");
62+
assertEquals("a8a2f6ebe286697c527eb35a58b5539532e9b3ae3b64d4eb0a46fb657b41562c", sha256, "Incorrect SHA-256 sum!");
63+
assertEquals("f3bf9aa70169e4ab5339f20758986538fe6c96d7be3d184a036cde8161105fcf53516428fa096ac56247bb88085b0587d5ec8e56a6807b1af351305b2103d74b",
64+
sha512,
65+
"Incorrect SHA-512 sum!");
6066

6167
mdos.close();
6268

6369
logger.debug("MD5: " + md5);
6470
logger.debug("SHA1: " + sha1);
71+
logger.debug("SHA256: " + sha256);
72+
logger.debug("SHA512: " + sha512);
6573

6674
Path md5File = filePath.resolveSibling(filePath.getFileName() + EncryptionAlgorithmsEnum.MD5.getExtension());
6775
Path sha1File = filePath.resolveSibling(filePath.getFileName() + EncryptionAlgorithmsEnum.SHA1.getExtension());
76+
Path sha256File = filePath.resolveSibling(filePath.getFileName() + EncryptionAlgorithmsEnum.SHA256.getExtension());
77+
Path sha512File = filePath.resolveSibling(filePath.getFileName() + EncryptionAlgorithmsEnum.SHA512.getExtension());
6878

6979
assertTrue(Files.exists(md5File), "Failed to create md5 checksum filePath!");
7080
assertTrue(Files.exists(sha1File), "Failed to create sha1 checksum filePath!");
81+
assertTrue(Files.exists(sha256File), "Failed to create sha256 checksum filePath!");
82+
assertTrue(Files.exists(sha512File), "Failed to create sha512 checksum filePath!");
7183

7284
String md5ReadIn = MessageDigestUtils.readChecksumFile(md5File.toString());
7385
String sha1ReadIn = MessageDigestUtils.readChecksumFile(sha1File.toString());
86+
String sha256ReadIn = MessageDigestUtils.readChecksumFile(sha256File.toString());
87+
String sha512ReadIn = MessageDigestUtils.readChecksumFile(sha512File.toString());
7488

7589
assertEquals(md5, md5ReadIn, "MD5 checksum filePath contains incorrect checksum!");
7690
assertEquals(sha1, sha1ReadIn, "SHA-1 checksum filePath contains incorrect checksum!");
91+
assertEquals(sha256, sha256ReadIn, "SHA-256 checksum filePath contains incorrect checksum!");
92+
assertEquals(sha512, sha512ReadIn, "SHA-512 checksum filePath contains incorrect checksum!");
7793
}
7894

7995
@Test
@@ -135,12 +151,20 @@ void testConcatenatedWrites()
135151

136152
final String md5 = mdos.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.MD5.getAlgorithm());
137153
final String sha1 = mdos.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.SHA1.getAlgorithm());
154+
final String sha256 = mdos.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.SHA256.getAlgorithm());
155+
final String sha512 = mdos.getMessageDigestAsHexadecimalString(EncryptionAlgorithmsEnum.SHA512.getAlgorithm());
138156

139157
logger.debug("MD5: {}", md5);
140158
logger.debug("SHA1: {}", sha1);
159+
logger.debug("SHA256: {}", sha256);
160+
logger.debug("SHA512: {}", sha512);
141161

142162
assertEquals("693188a2fb009bf2a87afcbca95cfcd6", md5, "Incorrect MD5 sum!");
143163
assertEquals("6ed7c74babd1609cb11836279672ade14a8748c1", sha1, "Incorrect SHA-1 sum!");
164+
assertEquals("4716861ef13609f87cc9ba9d0f9cba6c1d7894dd21cfca2f965631d6933fffbb", sha256, "Incorrect SHA-256 sum!");
165+
assertEquals("d87e40392a0749350059a366f3cc2e72a008b5feae3a845528660649545d8388b86ad540498756d9c5eb9365c5940c4146a8f5302d1ed42a253b90f9ec438deb",
166+
sha512,
167+
"Incorrect SHA-512 sum!");
144168
}
145169

146170
}

0 commit comments

Comments
 (0)