diff --git a/core-java-io/README.md b/core-java-io/README.md
index 3d028783ed..2ad980ca6a 100644
--- a/core-java-io/README.md
+++ b/core-java-io/README.md
@@ -35,3 +35,5 @@
- [Guide to Java OutputStream](https://www.baeldung.com/java-outputstream)
- [Reading a CSV File into an Array](https://www.baeldung.com/java-csv-file-array)
- [Guide to BufferedReader](https://www.baeldung.com/java-buffered-reader)
+- [How to Get the File Extension of a File in Java](http://www.baeldung.com/java-file-extension)
+- [Getting a File’s Mime Type in Java](http://www.baeldung.com/java-file-mime-type)
\ No newline at end of file
diff --git a/core-java-io/pom.xml b/core-java-io/pom.xml
index ac5f1f7c2e..1f2d52de81 100644
--- a/core-java-io/pom.xml
+++ b/core-java-io/pom.xml
@@ -160,6 +160,17 @@
${opencsv.version}
test
+
+
+ org.apache.tika
+ tika-core
+ ${tika.version}
+
+
+ net.sf.jmimemagic
+ jmimemagic
+ ${jmime-magic.version}
+
@@ -264,6 +275,9 @@
2.1.0.1
1.19
2.4.5
+
+ 1.18
+ 0.1.5
\ No newline at end of file
diff --git a/core-java/src/main/java/com/baeldung/extension/Extension.java b/core-java-io/src/main/java/com/baeldung/extension/Extension.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/extension/Extension.java
rename to core-java-io/src/main/java/com/baeldung/extension/Extension.java
diff --git a/core-java/src/test/java/com/baeldung/extension/ExtensionUnitTest.java b/core-java-io/src/test/java/com/baeldung/extension/ExtensionUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/extension/ExtensionUnitTest.java
rename to core-java-io/src/test/java/com/baeldung/extension/ExtensionUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/java/mimetype/MimeTypeUnitTest.java b/core-java-io/src/test/java/com/baeldung/java/mimetype/MimeTypeUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/java/mimetype/MimeTypeUnitTest.java
rename to core-java-io/src/test/java/com/baeldung/java/mimetype/MimeTypeUnitTest.java
diff --git a/core-java/src/test/resources/META-INF/mime.types b/core-java-io/src/test/resources/META-INF/mime.types
similarity index 100%
rename from core-java/src/test/resources/META-INF/mime.types
rename to core-java-io/src/test/resources/META-INF/mime.types
diff --git a/core-java/src/test/resources/product.png b/core-java-io/src/test/resources/product.png
similarity index 100%
rename from core-java/src/test/resources/product.png
rename to core-java-io/src/test/resources/product.png
diff --git a/core-java-security/README.md b/core-java-security/README.md
new file mode 100644
index 0000000000..415171094b
--- /dev/null
+++ b/core-java-security/README.md
@@ -0,0 +1,11 @@
+## Core Java Security
+
+### Relevant Articles:
+- [MD5 Hashing in Java](http://www.baeldung.com/java-md5)
+- [Guide to the Cipher Class](http://www.baeldung.com/java-cipher-class)
+- [Introduction to SSL in Java](http://www.baeldung.com/java-ssl)
+- [Java KeyStore API](http://www.baeldung.com/java-keystore)
+- [Encrypting and Decrypting Files in Java](http://www.baeldung.com/java-cipher-input-output-stream)
+- [Hashing a Password in Java](https://www.baeldung.com/java-password-hashing)
+- [SSL Handshake Failures](https://www.baeldung.com/java-ssl-handshake-failures)
+- [SHA-256 Hashing in Java](https://www.baeldung.com/sha-256-hashing-java)
\ No newline at end of file
diff --git a/core-java-security/pom.xml b/core-java-security/pom.xml
new file mode 100644
index 0000000000..cf91121465
--- /dev/null
+++ b/core-java-security/pom.xml
@@ -0,0 +1,55 @@
+
+ 4.0.0
+ com.baeldung
+ core-java-security
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-security
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../parent-java
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj-core.version}
+ test
+
+
+
+ commons-codec
+ commons-codec
+ ${commons-codec.version}
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+ ${bouncycastle.version}
+
+
+
+
+
+
+ 3.8.1
+ 1.55
+ 1.10
+
+
+ 3.10.0
+
+
+
+
diff --git a/core-java/src/main/java/com/baeldung/cipher/Encryptor.java b/core-java-security/src/main/java/com/baeldung/cipher/Encryptor.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/cipher/Encryptor.java
rename to core-java-security/src/main/java/com/baeldung/cipher/Encryptor.java
diff --git a/core-java/src/main/java/com/baeldung/encrypt/FileEncrypterDecrypter.java b/core-java-security/src/main/java/com/baeldung/encrypt/FileEncrypterDecrypter.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/encrypt/FileEncrypterDecrypter.java
rename to core-java-security/src/main/java/com/baeldung/encrypt/FileEncrypterDecrypter.java
diff --git a/core-java/src/main/java/com/baeldung/hashing/SHA256Hashing.java b/core-java-security/src/main/java/com/baeldung/hashing/SHA256Hashing.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/hashing/SHA256Hashing.java
rename to core-java-security/src/main/java/com/baeldung/hashing/SHA256Hashing.java
diff --git a/core-java/src/main/java/com/baeldung/keystore/JavaKeyStore.java b/core-java-security/src/main/java/com/baeldung/keystore/JavaKeyStore.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/keystore/JavaKeyStore.java
rename to core-java-security/src/main/java/com/baeldung/keystore/JavaKeyStore.java
diff --git a/core-java/src/main/java/com/baeldung/passwordhashing/PBKDF2Hasher.java b/core-java-security/src/main/java/com/baeldung/passwordhashing/PBKDF2Hasher.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/passwordhashing/PBKDF2Hasher.java
rename to core-java-security/src/main/java/com/baeldung/passwordhashing/PBKDF2Hasher.java
diff --git a/core-java/src/main/java/com/baeldung/passwordhashing/SHA512Hasher.java b/core-java-security/src/main/java/com/baeldung/passwordhashing/SHA512Hasher.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/passwordhashing/SHA512Hasher.java
rename to core-java-security/src/main/java/com/baeldung/passwordhashing/SHA512Hasher.java
diff --git a/core-java/src/main/java/com/baeldung/passwordhashing/SimplePBKDF2Hasher.java b/core-java-security/src/main/java/com/baeldung/passwordhashing/SimplePBKDF2Hasher.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/passwordhashing/SimplePBKDF2Hasher.java
rename to core-java-security/src/main/java/com/baeldung/passwordhashing/SimplePBKDF2Hasher.java
diff --git a/core-java/src/main/java/com/baeldung/ssl/SecureConnection.java b/core-java-security/src/main/java/com/baeldung/ssl/SecureConnection.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/ssl/SecureConnection.java
rename to core-java-security/src/main/java/com/baeldung/ssl/SecureConnection.java
diff --git a/core-java/src/main/java/com/baeldung/ssl/example/SimpleClient.java b/core-java-security/src/main/java/com/baeldung/ssl/example/SimpleClient.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/ssl/example/SimpleClient.java
rename to core-java-security/src/main/java/com/baeldung/ssl/example/SimpleClient.java
diff --git a/core-java/src/main/java/com/baeldung/ssl/example/SimpleServer.java b/core-java-security/src/main/java/com/baeldung/ssl/example/SimpleServer.java
similarity index 100%
rename from core-java/src/main/java/com/baeldung/ssl/example/SimpleServer.java
rename to core-java-security/src/main/java/com/baeldung/ssl/example/SimpleServer.java
diff --git a/core-java-security/src/main/resources/logback.xml b/core-java-security/src/main/resources/logback.xml
new file mode 100644
index 0000000000..56af2d397e
--- /dev/null
+++ b/core-java-security/src/main/resources/logback.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core-java/src/test/java/com/baeldung/cipher/EncryptorUnitTest.java b/core-java-security/src/test/java/com/baeldung/cipher/EncryptorUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/cipher/EncryptorUnitTest.java
rename to core-java-security/src/test/java/com/baeldung/cipher/EncryptorUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/encrypt/FileEncrypterDecrypterIntegrationTest.java b/core-java-security/src/test/java/com/baeldung/encrypt/FileEncrypterDecrypterIntegrationTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/encrypt/FileEncrypterDecrypterIntegrationTest.java
rename to core-java-security/src/test/java/com/baeldung/encrypt/FileEncrypterDecrypterIntegrationTest.java
diff --git a/core-java/src/test/java/com/baeldung/hashing/SHA256HashingUnitTest.java b/core-java-security/src/test/java/com/baeldung/hashing/SHA256HashingUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/hashing/SHA256HashingUnitTest.java
rename to core-java-security/src/test/java/com/baeldung/hashing/SHA256HashingUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/keystore/JavaKeyStoreUnitTest.java b/core-java-security/src/test/java/com/baeldung/keystore/JavaKeyStoreUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/keystore/JavaKeyStoreUnitTest.java
rename to core-java-security/src/test/java/com/baeldung/keystore/JavaKeyStoreUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/passwordhashing/PBKDF2HasherUnitTest.java b/core-java-security/src/test/java/com/baeldung/passwordhashing/PBKDF2HasherUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/passwordhashing/PBKDF2HasherUnitTest.java
rename to core-java-security/src/test/java/com/baeldung/passwordhashing/PBKDF2HasherUnitTest.java
diff --git a/core-java/src/test/java/com/baeldung/passwordhashing/SHA512HasherUnitTest.java b/core-java-security/src/test/java/com/baeldung/passwordhashing/SHA512HasherUnitTest.java
similarity index 100%
rename from core-java/src/test/java/com/baeldung/passwordhashing/SHA512HasherUnitTest.java
rename to core-java-security/src/test/java/com/baeldung/passwordhashing/SHA512HasherUnitTest.java
diff --git a/core-java/src/test/java/org/baeldung/java/md5/JavaMD5UnitTest.java b/core-java-security/src/test/java/org/baeldung/java/md5/JavaMD5UnitTest.java
similarity index 100%
rename from core-java/src/test/java/org/baeldung/java/md5/JavaMD5UnitTest.java
rename to core-java-security/src/test/java/org/baeldung/java/md5/JavaMD5UnitTest.java
diff --git a/core-java/src/test/resources/test_md5.txt b/core-java-security/src/test/resources/test_md5.txt
similarity index 100%
rename from core-java/src/test/resources/test_md5.txt
rename to core-java-security/src/test/resources/test_md5.txt
diff --git a/core-java/README.md b/core-java/README.md
index 21c58bb880..a3dd7fb2b7 100644
--- a/core-java/README.md
+++ b/core-java/README.md
@@ -5,7 +5,6 @@
### Relevant Articles:
- [Java Timer](http://www.baeldung.com/java-timer-and-timertask)
- [How to Run a Shell Command in Java](http://www.baeldung.com/run-shell-command-in-java)
-- [MD5 Hashing in Java](http://www.baeldung.com/java-md5)
- [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java)
- [A Guide To Java Regular Expressions API](http://www.baeldung.com/regular-expressions-java)
- [Getting Started with Java Properties](http://www.baeldung.com/java-properties)
@@ -24,7 +23,6 @@
- [Creating a Java Compiler Plugin](http://www.baeldung.com/java-build-compiler-plugin)
- [Quick Guide to Java Stack](http://www.baeldung.com/java-stack)
- [Guide to java.util.Formatter](http://www.baeldung.com/java-string-formatter)
-- [Guide to the Cipher Class](http://www.baeldung.com/java-cipher-class)
- [Compiling Java *.class Files with javac](http://www.baeldung.com/javac)
- [A Guide to Iterator in Java](http://www.baeldung.com/java-iterator)
- [Introduction to Javadoc](http://www.baeldung.com/javadoc)
@@ -35,27 +33,20 @@
- [What is the serialVersionUID?](http://www.baeldung.com/java-serial-version-uid)
- [A Guide to the ResourceBundle](http://www.baeldung.com/java-resourcebundle)
- [Class Loaders in Java](http://www.baeldung.com/java-classloaders)
-- [Introduction to SSL in Java](http://www.baeldung.com/java-ssl)
-- [Java KeyStore API](http://www.baeldung.com/java-keystore)
- [Double-Checked Locking with Singleton](http://www.baeldung.com/java-singleton-double-checked-locking)
- [Guide to Java Clock Class](http://www.baeldung.com/java-clock)
- [Importance of Main Manifest Attribute in a Self-Executing JAR](http://www.baeldung.com/java-jar-executable-manifest-main-class)
-- [How to Get the File Extension of a File in Java](http://www.baeldung.com/java-file-extension)
- [Java Global Exception Handler](http://www.baeldung.com/java-global-exception-handler)
-- [Encrypting and Decrypting Files in Java](http://www.baeldung.com/java-cipher-input-output-stream)
- [How to Get the Size of an Object in Java](http://www.baeldung.com/java-size-of-object)
- [Guide to Java Instrumentation](http://www.baeldung.com/java-instrumentation)
-- [Getting a File’s Mime Type in Java](http://www.baeldung.com/java-file-mime-type)
- [Common Java Exceptions](http://www.baeldung.com/java-common-exceptions)
- [Throw Exception in Optional in Java 8](https://www.baeldung.com/java-optional-throw-exception)
- [Add a Character to a String at a Given Position](https://www.baeldung.com/java-add-character-to-string)
- [Calculating the nth Root in Java](https://www.baeldung.com/java-nth-root)
- [Convert Double to String, Removing Decimal Places](https://www.baeldung.com/java-double-to-string)
- [ZoneOffset in Java](https://www.baeldung.com/java-zone-offset)
-- [Hashing a Password in Java](https://www.baeldung.com/java-password-hashing)
- [Merging java.util.Properties Objects](https://www.baeldung.com/java-merging-properties)
- [A Guide to SimpleDateFormat](https://www.baeldung.com/java-simple-date-format)
-- [SSL Handshake Failures](https://www.baeldung.com/java-ssl-handshake-failures)
- [Changing the Order in a Sum Operation Can Produce Different Results?](https://www.baeldung.com/java-floating-point-sum-order)
- [Java – Try with Resources](https://www.baeldung.com/java-try-with-resources)
- [Abstract Classes in Java](https://www.baeldung.com/java-abstract-class)
diff --git a/core-java/pom.xml b/core-java/pom.xml
index b4f0643aa8..6c58653d5a 100644
--- a/core-java/pom.xml
+++ b/core-java/pom.xml
@@ -24,11 +24,6 @@
commons-lang3
${commons-lang3.version}
-
- org.bouncycastle
- bcprov-jdk15on
- ${bouncycastle.version}
-
org.unix4j
unix4j-command
@@ -75,12 +70,6 @@
${assertj-core.version}
test
-
-
- commons-codec
- commons-codec
- ${commons-codec.version}
-
org.javamoney
moneta
@@ -126,17 +115,6 @@
h2
${h2database.version}
-
-
- org.apache.tika
- tika-core
- ${tika.version}
-
-
- net.sf.jmimemagic
- jmimemagic
- ${jmime-magic.version}
-
org.javassist
@@ -477,8 +455,6 @@
3.5
- 1.55
- 1.10
2.5
3.6.1
1.0.3
@@ -509,9 +485,6 @@
2.0.3.RELEASE
1.6.0
61.1
-
- 1.18
- 0.1.5
3.21.0-GA
diff --git a/guava/README.md b/guava/README.md
index 0346d34903..60754dbe57 100644
--- a/guava/README.md
+++ b/guava/README.md
@@ -18,4 +18,3 @@
- [Hamcrest Text Matchers](http://www.baeldung.com/hamcrest-text-matchers)
- [Quick Guide to the Guava RateLimiter](http://www.baeldung.com/guava-rate-limiter)
- [Hamcrest File Matchers](https://www.baeldung.com/hamcrest-file-matchers)
-- [SHA-256 Hashing in Java](https://www.baeldung.com/sha-256-hashing-java)
diff --git a/pom.xml b/pom.xml
index 923cbab302..e8ff86665c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -383,6 +383,7 @@
core-java-concurrency-basic
core-java-concurrency-collections
core-java-io
+ core-java-security
core-java-lang-syntax
core-java-lang
core-java-lang-oop
@@ -1095,6 +1096,7 @@
core-java-concurrency-basic
core-java-concurrency-collections
core-java-io
+ core-java-security
core-java-lang-syntax
core-java-lang
core-java-lang-oop