From 408254cf5c9be2511e7bb93571d592493bd1a726 Mon Sep 17 00:00:00 2001 From: Thies Date: Thu, 19 Jul 2018 02:43:51 +0200 Subject: [PATCH] Initial commit, working MelCrypt --- .classpath | 6 ++ .gitignore | 1 + .project | 17 +++++ .../MelcryptJavaAPI/Core/Melcrypt.java | 72 +++++++++++++++++++ src/de/Thiesyy/MelcryptJavaAPI/Core/Test.java | 12 ++++ .../MelcryptJavaAPI/Util/KeyGenerator.java | 24 +++++++ .../MelcryptJavaAPI/Util/MelcryptDataSet.java | 30 ++++++++ 7 files changed, 162 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 src/de/Thiesyy/MelcryptJavaAPI/Core/Melcrypt.java create mode 100644 src/de/Thiesyy/MelcryptJavaAPI/Core/Test.java create mode 100644 src/de/Thiesyy/MelcryptJavaAPI/Util/KeyGenerator.java create mode 100644 src/de/Thiesyy/MelcryptJavaAPI/Util/MelcryptDataSet.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..d171cd4 --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/.gitignore b/.gitignore index d3ffd6b..57e67ea 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* +/bin/ diff --git a/.project b/.project new file mode 100644 index 0000000..1db81ce --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + MelcryptJavaAPI + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/src/de/Thiesyy/MelcryptJavaAPI/Core/Melcrypt.java b/src/de/Thiesyy/MelcryptJavaAPI/Core/Melcrypt.java new file mode 100644 index 0000000..9028e1d --- /dev/null +++ b/src/de/Thiesyy/MelcryptJavaAPI/Core/Melcrypt.java @@ -0,0 +1,72 @@ +package de.Thiesyy.MelcryptJavaAPI.Core; + +import java.util.Random; + +import de.Thiesyy.MelcryptJavaAPI.Util.KeyGenerator; +import de.Thiesyy.MelcryptJavaAPI.Util.MelcryptDataSet; + +public class Melcrypt { +public static MelcryptDataSet encode(int security, String Text) { + System.out.println("Encrypting can take large Calculation power!"); +String[] Keys = new String[security]; +for(int x = 0; x != security; x++) { +Keys[x] = KeyGenerator.generateKey(); +} +for(String x : Keys) { +Text = encrypt(x, Text); +} +return new MelcryptDataSet(Keys, Text); +} +private static String encrypt(String key, String Text) { + int Length = Text.length() * 9; + String Rdm = genRdmStr(Length); + String toRet = Rdm; + long KeyLoc = -1; + long Loc = 0; + StringBuilder Return = new StringBuilder(Rdm); + for(int x = 0; x != Text.length(); x++) { + KeyLoc++; + Loc += Integer.parseInt(key.charAt((int) (KeyLoc % 8))+""); + Return.setCharAt((int) Loc, Text.charAt(x)); + } + toRet = Return.toString(); + +return toRet; +} + +private static String genRdmStr(int length) { + String toUse = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz[]}{?.,=!§$%&()1234567890"; + String built = ""; + for(int x = 0; x != length; x++) + built += toUse.charAt(new Random().nextInt(toUse.length())); + +return built; +} +public static String decode(MelcryptDataSet MDS) { +String Crypted = MDS.getCrypted(); +String[] keays = new String[MDS.getCodes().length]; +int a = keays.length-1; +for(String x : MDS.getCodes()) { + keays[a] = x; + a--; +} + +for(String key : keays) { +Crypted = decrypt(key, Crypted); +} +return Crypted; + +} +private static String decrypt(String key, String crypted) { + String toRet = ""; + int RealtextLength = crypted.length() / 9; + int KeyLoc = -1; + int Loc = 0; + for(int x = 0; x != RealtextLength; x++) { + KeyLoc++; + Loc += Integer.parseInt(key.charAt(KeyLoc % 8)+""); + toRet += crypted.charAt(Loc); +} + return toRet; +} +} diff --git a/src/de/Thiesyy/MelcryptJavaAPI/Core/Test.java b/src/de/Thiesyy/MelcryptJavaAPI/Core/Test.java new file mode 100644 index 0000000..d0d2eaa --- /dev/null +++ b/src/de/Thiesyy/MelcryptJavaAPI/Core/Test.java @@ -0,0 +1,12 @@ +package de.Thiesyy.MelcryptJavaAPI.Core; + +import de.Thiesyy.MelcryptJavaAPI.Util.MelcryptDataSet; + +public class Test { +public static void main(String[] args) { +MelcryptDataSet x = Melcrypt.encode(4, "Yalla habibi"); +System.out.println(x.getCrypted()); +System.out.println(Melcrypt.decode(x)); + +} +} diff --git a/src/de/Thiesyy/MelcryptJavaAPI/Util/KeyGenerator.java b/src/de/Thiesyy/MelcryptJavaAPI/Util/KeyGenerator.java new file mode 100644 index 0000000..5dfd620 --- /dev/null +++ b/src/de/Thiesyy/MelcryptJavaAPI/Util/KeyGenerator.java @@ -0,0 +1,24 @@ +package de.Thiesyy.MelcryptJavaAPI.Util; + +import java.security.SecureRandom; +import java.util.Random; + + +public class KeyGenerator { + /** + * Returns a random Key for the Melcrypt Encryption. + * @return + */ + +public static String generateKey() { +String x = ""; +for(int y = 0; y != 8; y++) { +int z; +z = (int) ((new Random().nextInt(10)*4+new SecureRandom().nextInt(10)+System.currentTimeMillis()+new Random().nextInt(10))%10); +if(z==0)z=3; +x+=z; +} +return x; +} +} + diff --git a/src/de/Thiesyy/MelcryptJavaAPI/Util/MelcryptDataSet.java b/src/de/Thiesyy/MelcryptJavaAPI/Util/MelcryptDataSet.java new file mode 100644 index 0000000..54d341b --- /dev/null +++ b/src/de/Thiesyy/MelcryptJavaAPI/Util/MelcryptDataSet.java @@ -0,0 +1,30 @@ +package de.Thiesyy.MelcryptJavaAPI.Util; + +public class MelcryptDataSet { +private String[] codes; +private String Crypted; +/** + * Returns a random Key for the Melcrypt Encryption. + * @param Codes + * @param Cryptedtext + * @return + * Data Set with Codes and Crypted Text + */ +public MelcryptDataSet(String[] codes, String Crypted) { +this.codes = codes; +this.Crypted = Crypted; +} +public String[] getCodes() { + return codes; +} +public void setCodes(String[] codes) { + this.codes = codes; +} +public String getCrypted() { + return Crypted; +} +public void setCrypted(String crypted) { + Crypted = crypted; +} + +}