From 2f8c04134fcab0f2e3f47b5d2a27cae474e2fc86 Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 18 Oct 2020 21:53:47 +0200 Subject: [PATCH] inital commit --- .idea/.gitignore | 8 + .idea/description.html | 1 + .idea/encodings.xml | 6 + .idea/misc.xml | 12 + .idea/modules.xml | 8 + .idea/project-template.xml | 3 + ModularArithmaticCalculator.iml | 12 + .../tech/loedige/Main.class | Bin 0 -> 5216 bytes .../util/Dump.class | Bin 0 -> 5431 bytes .../util/IllegalHexDumpException.class | Bin 0 -> 380 bytes src/tech/loedige/Main.java | 146 ++++++++++++ src/util/Dump.java | 215 ++++++++++++++++++ src/util/IllegalHexDumpException.java | 15 ++ 13 files changed, 426 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/description.html create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/project-template.xml create mode 100644 ModularArithmaticCalculator.iml create mode 100644 out/production/ModularArithmaticCalculator/tech/loedige/Main.class create mode 100644 out/production/ModularArithmaticCalculator/util/Dump.class create mode 100644 out/production/ModularArithmaticCalculator/util/IllegalHexDumpException.class create mode 100644 src/tech/loedige/Main.java create mode 100644 src/util/Dump.java create mode 100644 src/util/IllegalHexDumpException.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/description.html b/.idea/description.html new file mode 100644 index 0000000..db5f129 --- /dev/null +++ b/.idea/description.html @@ -0,0 +1 @@ +Simple Java application that includes a class with main() method \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..935a154 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..a331603 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/project-template.xml b/.idea/project-template.xml new file mode 100644 index 0000000..1f08b88 --- /dev/null +++ b/.idea/project-template.xml @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/ModularArithmaticCalculator.iml b/ModularArithmaticCalculator.iml new file mode 100644 index 0000000..d5c0743 --- /dev/null +++ b/ModularArithmaticCalculator.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/out/production/ModularArithmaticCalculator/tech/loedige/Main.class b/out/production/ModularArithmaticCalculator/tech/loedige/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..9c80beb680dea5c2bfebe1bd11571d8b359aba70 GIT binary patch literal 5216 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 literal 0 HcmV?d00001 diff --git a/out/production/ModularArithmaticCalculator/util/Dump.class b/out/production/ModularArithmaticCalculator/util/Dump.class new file mode 100644 index 0000000000000000000000000000000000000000..515d45c81db52a52275e54311faeda2261e5cb8c GIT binary patch literal 5431 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 literal 0 HcmV?d00001 diff --git a/out/production/ModularArithmaticCalculator/util/IllegalHexDumpException.class b/out/production/ModularArithmaticCalculator/util/IllegalHexDumpException.class new file mode 100644 index 0000000000000000000000000000000000000000..f6d121818ab000fd654f040c3ebcd60c3d44a367 GIT binary patch literal 380 zcmaJ-%Sr=55UgI;U0tJz3wjEIo_v708wrRH6c#U$+$Za>j?B)6aYpi6o&*p106$9X z(TJj8ADXVBsP3-Ux0e}!Bjgz(ETo8ASVThDxfhS3r-i9{S6a(T=o4G{S{ipgE#<_i z#t@QYWt1BbHg=0|{m@xus{Y<6#S)?Gozh<(mvVaM>&Xv`__Vo|gm$5fy!Q22+8Z&} z%;ZH=3Oy251w1EXcc&f*Tg88-eFCv4|9cW48#dmS@hk%5{mso uDBPDB4VVplvVZUldg3WU#ytcGtg>hw6!umVC_**3a literal 0 HcmV?d00001 diff --git a/src/tech/loedige/Main.java b/src/tech/loedige/Main.java new file mode 100644 index 0000000..06bafa2 --- /dev/null +++ b/src/tech/loedige/Main.java @@ -0,0 +1,146 @@ +package tech.loedige; + +import util.Dump; + +import java.math.BigInteger; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + // write your code here + int Z = 13; + /*getOrderAndInverse(Z); + + getPrimitiveElement(2); + getPrimitiveElement(3); + getPrimitiveElement(5); + getPrimitiveElement(7); + getPrimitiveElement(11); + getPrimitiveElement(13); + getPrimitiveElement(17); + getPrimitiveElement(19); + getPrimitiveElement(23);*/ + + + /*getGroupAndMaxOrder(4); + getGroupAndMaxOrder(6); + getGroupAndMaxOrder(8); + getGroupAndMaxOrder(9); + getGroupAndMaxOrder(10); + getGroupAndMaxOrder(12); + getGroupAndMaxOrder(14); + getGroupAndMaxOrder(15); + getGroupAndMaxOrder(16);*/ + + /*getOrderRFC7919(2); + getOrderRFC7919(3); + getOrderRFC7919(4); + getOrderRFC7919(5); + getOrderRFC7919(6);*/ + getOrderRFC7919(7); + /*getOrderRFC7919(8); + getOrderRFC7919(9);*/ + + getSharedSecret(); + } + + private static void getSharedSecret(){ + BigInteger kA_pub = new BigInteger("27282667746838411939143241666723046694527264637007559423952796008903977634324023737753124358327044498235695067321378479835998035654034644517179759788901352737738466214712414616949468433629993070414307680308271213886171008791853033810348102610871852298273695732098461918442112517731219977692798111421155148916640251520848785936004364583451306844563558619725135844767334446174867008412854680440175554752338253195095533723949367607823291954964390988919344648377988215096163955782620638461956467357105200224013185118543681273714672276506212170327933806962609375007526608015272079508124813944474288170004694821130997859203"); + BigInteger kB_priv = new BigInteger("7532919400457445663303700830973523590423263864724159934023391416574147324621933536449637606282131103918883626115855343351325277070984876733129265301205702642333354707816589145340968726389894044688024166108036474255111533732948913177796353881817402947686860467714661832933242570411627309386297780537824324832627012380856381669126724451049618946281819268817314740486708353781450544470119941814532875098325894703744849701616223792195949010930775348252418316672068234315909190760678573146228014902673906821408531294133290046052716296787531205413964871695349574817105255572494804346109933903949904551005148642787422867446"); + BigInteger n = new BigInteger("32317006071311007300153513477825163362488057133489075174588434139269806834136210002792056362640164685458556357935330816928829023080573472625273554742461245741026202527916572972862706300325263428213145766931414223654220941111348629991657478268034230553086349050635557712219187890332729569696129743856241741236237225197346402691855797767976823014625397933058015226858730761197532436467475855460715043896844940366130497697812854295958659597567051283852132784468522925504568272879113720098931873959143374175837826000278034973198552060607533234122603254684088120031105907484281003994966956119696956248629032338072839127039"); + BigInteger g = BigInteger.TWO; + + BigInteger kA_B = kA_pub.modPow(kB_priv,n); + System.out.println("k_A,B= "+kA_B.toString()); + } + + private static void getOrderRFC7919(int i){ + BigInteger p = new BigInteger("323170060713110073001535134778251633624880571334890751745884341392698068341" + + "362100027920563626401646854585563579353308169288290230805734726252735547424612457410262025279165729728" + + "627063003252634282131457669314142236542209411113486299916574782680342305530863490506355577122191878903" + + "327295696961297438562417412362372251973464026918557977679768230146253979330580152268587307611975324364" + + "674758554607150438968449403661304976978128542959586595975670512838521327844685229255045682728791137200" + + "989318739591433741758378260002780349731985520606075332341226032546840881200311059074842810039949669561" + + "19696956248629032338072839127039"); + BigInteger bi = BigInteger.valueOf(i); + BigInteger o =p.divide(bi); + o= o.add(BigInteger.ONE); + BigInteger r = bi.multiply(o); + if(r.mod(p).compareTo(BigInteger.ONE)==0){ + System.out.println(i + ":\t" +o.subtract(BigInteger.ONE).toString()); + } + else{ + int c = 2; + while(true){ + bi = BigInteger.valueOf(i); + o =p.divide(bi); + o =o.multiply(BigInteger.valueOf(c)); + o= o.add(BigInteger.ONE); + System.out.println(c); + if(r.mod(p).compareTo(BigInteger.ONE)==0){ + System.out.println(i + ":\t" +o.subtract(BigInteger.ONE).toString()); + return; + } + c++; + } + } + + } + + private static void getGroupAndMaxOrder(int Z){ + int max = 0; + int groupOrder=0; + for(int i=1; i> 1; + byte[] ba = new byte[byteArrayLength]; + for (int i = 0; i < byteArrayLength; ++i) { + try { + ba[i] + = (byte) Integer.parseInt( + hexString.substring(2 * i, 2 * i + 2), 16); + } catch (NumberFormatException nfe) { + throw new IllegalHexDumpException( + "Invalid characters " + + hexString.substring(2 * i, 2 * i + 2) + + " at position " + 2 * i + + " (of streamlined string)!"); + } + } + return ba; + } + + // ------------------------------------------------------ + public static String dumpString(int i) { + String retString = Integer.toString(i, 16); + if ((retString.length() & 0x01) != 0) { + retString = "0" + retString; + } + + return retString.toUpperCase(); + } + + public static String dumpString(byte b) { + return dumpString(b & 0xff); + } + + public static String dumpString(byte[] data) { + return dumpString(data, 0, data.length); + } + + public static String dumpString( + byte[] data, int offset, int length) { + return dumpString(data, "", offset, length); + } + + public static String dumpString( + byte[] data, String interBytesString, + int offset, int length) { + if (offset < 0 || length < 0) { + throw new IllegalArgumentException( + "Values for offset and parameters must be " + + "non-negative!"); + } + if (data == null) { + if (offset > 0 || length > 0) { + throw new IllegalArgumentException( + "Specified range not available in data!"); + } + return ""; + } + if ((offset + length) > data.length) { + throw new IllegalArgumentException( + "Specified range not available in data!"); + } + + StringBuffer sb = new StringBuffer(length + * (2 + interBytesString.length())); + for (int i = offset; i < offset + length; ++i) { + if (i != 0) { + sb.append(interBytesString); + } + sb.append(dumpString(data[i])); + } + return new String(sb); + } + + // ------------------------------------------------------ + public static String dump(BigInteger b) { + byte[] data = b.toByteArray(); + int l = data.length; + if (l > 1 && data[0] == 0) { + System.arraycopy(data, 1, data, 0, --l); + } + return dump(data, l); + } + + public static String dump(byte[] data) { + return dump(data, data.length); + } + + public static String dump(byte[] data, int length) { + StringBuffer sb + = new StringBuffer(78 * ((length + 15) >> 4)); + char[] txt = new char[16]; + + int i = 0; + for (; i < length;) { + if ((i & 0x0f) == 0) { + sb.append(alignRight( + Integer.toHexString(i) + " ", 9, '0')); + } + + int temp = (0xff & data[i]); + sb.append(dumpString(temp)); + sb.append(" "); + + if (temp < 0x20 || temp > 0x7e) /// ??? + { + txt[i++ & 0x0f] = '.'; + } // if( temp == 0x0a || temp == 0x09 || temp == 0x0d ) /// ??? + // txt[i++ & 0x0f] = (char)0; + else { + txt[i++ & 0x0f] = (char) temp; + } + + if ((i & 0x0f) == 0) { + sb.append(" "); + sb.append(txt, 0, 16); + sb.append(NL); + } + } + + if (i == 0) // empty data + { + sb.append("000000 "); + } + + if ((i = (i & 0x0f)) != 0) { + sb.append(fillString(3 * (16 - i), ' ') + " "); + sb.append(txt, 0, i); + sb.append(NL); + } + + return new String(sb.toString().trim()); + } + + /** + * @return If str.length() < totalLength, a String of + * length totalLength is returned. (The original String + * extended by specified character from the left.) + */ + public static String alignRight( + String str, int totalLength, char fillChar) { + if (totalLength <= str.length()) { + return str; + } + return fillString(totalLength - str.length(), fillChar) + + str; + } + + /** + * @return If str.length() < totalLength, a String of + * length totalLength is returned. (The original String + * extended by space characters from the left.) + */ + public static String alignRight( + String str, int totalLength) { + return alignRight(str, totalLength, ' '); + } + + /** + * @return A String of repLength many repetitions of + * specified character. + */ + public static String fillString( + int spaceLength, char fillChar) { + if (spaceLength < 0) { + spaceLength = 0; + } + StringBuffer sb = new StringBuffer(spaceLength); + for (int i = 0; i < spaceLength; ++i) { + sb.append(fillChar); + } + return new String(sb); + } + + // ------------------------------------------------------ + public static String dumpIntArray(int[] array) { + int nosPerLine = 4; + StringBuffer sb = new StringBuffer(); + Formatter formatter = new Formatter(sb); + for (int i = 0; i < array.length; ++i) { + if (i != 0 && i % nosPerLine == 0) { + sb.append(NL); + } + formatter.format(" %08x", array[i]); + } + sb.append(NL); + return new String(sb); + } +} + + diff --git a/src/util/IllegalHexDumpException.java b/src/util/IllegalHexDumpException.java new file mode 100644 index 0000000..4e26cdf --- /dev/null +++ b/src/util/IllegalHexDumpException.java @@ -0,0 +1,15 @@ +/* + * Stefan Heiss + * TH Ostwestfalen-Lippe + * FB Elektrotechnik und Technische Informatik + * Quellcode zur Lehrveranstaltung Datensicherheit + */ +package util; + +public class IllegalHexDumpException + extends IllegalArgumentException { + + public IllegalHexDumpException(String s) { + super(s); + } +}