Skip to content
This repository was archived by the owner on Nov 14, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Case Study: Hashing with MD5
  • Loading branch information
algokelvin-373 committed May 21, 2021
commit 4cbccf63c9e9957dfb0d0ca201ec7e3e33d9fa9b
22 changes: 22 additions & 0 deletions src/CodingCaseStudy/Hash_MD5/Case01_Hash_MD5.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package CodingCaseStudy.Hash_MD5;

import java.security.NoSuchAlgorithmException;

import static CodingCaseStudy.Hash_MD5.Hash_MD5.hashMD5;

public class Case01_Hash_MD5 {
public static void main(String[] args) throws NoSuchAlgorithmException {
String password = "ILoveJava";
String resultHashMD5 = hashMD5(password.getBytes());
String resultHashMD5Kotlin = Hash_MD5_Kotlin.hashMD5Kotlin(password.getBytes());

System.out.println(resultHashMD5); // Using Java
System.out.println(resultHashMD5Kotlin); // Using Kotlin

Hash_MD5_Kotlin hashMD5 = new Hash_MD5_Kotlin();
System.out.println(hashMD5.toMD5(password)); // Version Two Kotlin

System.out.println(resultHashMD5.toLowerCase()); // Using Java
System.out.println(resultHashMD5Kotlin.toLowerCase()); // Using Kotlin
}
}
26 changes: 26 additions & 0 deletions src/CodingCaseStudy/Hash_MD5/Case02_Hash_MD5.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package CodingCaseStudy.Hash_MD5;

import java.security.NoSuchAlgorithmException;

import static CodingCaseStudy.Hash_MD5.Hash_MD5.hashMD5;

public class Case02_Hash_MD5 {
public static void main(String[] args) throws NoSuchAlgorithmException {
StringBuilder stringBuilder = new StringBuilder();
String strTrace = String.format("%06d", 1);
String timestamp = String.valueOf(System.currentTimeMillis());
String merchantOrderId = timestamp + strTrace;

stringBuilder.append("D6368");
stringBuilder.append(merchantOrderId);
stringBuilder.append("10000");
stringBuilder.append("1ee1f3cfcbccfd22b37b808b89e3ee6e");

String sbString = String.valueOf(stringBuilder);
System.out.println("String Builder: \n" + sbString);

String resultHashMD5 = hashMD5(sbString.getBytes());

System.out.print(resultHashMD5.toLowerCase()); // Using Java
}
}
14 changes: 14 additions & 0 deletions src/CodingCaseStudy/Hash_MD5/Hash_MD5.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package CodingCaseStudy.Hash_MD5;

import javax.xml.bind.DatatypeConverter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Hash_MD5 {
public static String hashMD5(byte[] bytes) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(bytes);
byte[] digest = md.digest();
return DatatypeConverter.printHexBinary(digest);
}
}
23 changes: 23 additions & 0 deletions src/CodingCaseStudy/Hash_MD5/Hash_MD5_Kotlin.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package CodingCaseStudy.Hash_MD5

import java.security.MessageDigest
import javax.xml.bind.DatatypeConverter

class Hash_MD5_Kotlin {
companion object {
@JvmStatic
fun hashMD5Kotlin(bytes: ByteArray): String {
val md = MessageDigest.getInstance("MD5")
md.update(bytes)
val digest = md.digest()
return DatatypeConverter.printHexBinary(digest)
}
}
fun toMD5(txt: String): String {
val bytes = MessageDigest.getInstance("MD5").digest(txt.toByteArray())
return bytes.toHex()
}
private fun ByteArray.toHex(): String {
return joinToString("") { "%02x".format(it) }
}
}