From bcbdb8db5ccb1cad1a69669d2d9e3be6a7bb113e Mon Sep 17 00:00:00 2001 From: brausjonas Date: Tue, 9 May 2023 21:01:25 +0200 Subject: [PATCH] RSA Encryption for Passwords MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RSA Verschlüsseltes passwort kann über die Klasse RSA enschlüsselt werden. Keys für public - und private key liegen in den Dateien private.kfs und public.kfs --- backend/database.mv.db | Bin 40960 -> 36864 bytes backend/database.trace.db | 72 ++++++++++++++++++ backend/private.kfs | Bin 0 -> 1476 bytes backend/public.kfs | Bin 0 -> 551 bytes .../backend/anwprj/DataBaseHandler.java | 32 +++++++- .../backend/anwprj/Encryption/RSA.java | 58 ++++++++++++++ .../anwprj/controller/UserController.java | 13 ++++ 7 files changed, 171 insertions(+), 4 deletions(-) create mode 100644 backend/private.kfs create mode 100644 backend/public.kfs create mode 100644 backend/src/main/java/com/example/backend/anwprj/Encryption/RSA.java diff --git a/backend/database.mv.db b/backend/database.mv.db index 8e5008d4f7395060e286075addb5c6dc80869f8a..e8241afbf110b812dce5f972c3b9152986200abc 100644 GIT binary patch literal 36864 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 literal 40960 zcmeHQO>88`b?zDdOpDsJ49gaDuz}|6FO~72s{g8b3`I#)vIt=K667T0mLNy~!!T^ffMcC>5G*7)B!B@Q1o#JVE=GVHl3UJs{X5N> z;c~dku}o|cyHnNO)zz9w$bu*U{)_Cs-SxYOT{3x>O55WFJ}8k|^x;|p_1k$+MHQUg*0 zQUg*0QUg*0QUg*0QUg*0QUg*0QUjm62G%A1|J>U^3LrHgH6S%0H6S%0H6S%0H6S%0 zH6S%0H6S%GYYikuejJ7=3qY^!iv0$z?Xmj}tUHjt4{QJf)%L~v1Kk?j z`-27v10V_@-M6q=8|>_fhGY7UDTbtgsNz9CXb2N)XY?0Q3a*rPlya%0D1Z5hqS&uO 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 diff --git a/backend/database.trace.db b/backend/database.trace.db index 10bc2cb..389acd6 100644 --- a/backend/database.trace.db +++ b/backend/database.trace.db @@ -1482,3 +1482,75 @@ java.sql.SQLClientInfoException: Client info name 'ApplicationName' not supporte 2023-05-09 18:42:56 jdbc[3]: exception org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar No data is available [2000-214] +2023-05-09 19:24:03 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 19:24:10 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 19:24:12 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 19:24:13 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 19:28:20 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:11:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:11:59 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:12:54 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:13:35 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:14:49 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:18:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:20:34 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:21:44 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:22:01 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:24:05 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:27:20 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 20:46:16 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 18:55:35 jdbc[3]: exception +java.sql.SQLClientInfoException: Client info name 'ApplicationName' not supported. + at org.h2.jdbc.JdbcConnection.setClientInfo(JdbcConnection.java:1573) + at com.intellij.database.remote.jdbc.impl.RemoteConnectionImpl.setClientInfo(RemoteConnectionImpl.java:469) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) + at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) + at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) + at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) + at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:833) diff --git a/backend/private.kfs b/backend/private.kfs new file mode 100644 index 0000000000000000000000000000000000000000..c86248bd6ae9bc2d6b6c8dc15ef6b3e510f36a20 GIT binary patch literal 1476 zcmZvcc|6k%9LIl~Ig{j^E1@k9&&w=@RB|-NRxu;Y(OztG@37H?wjm`RAxUYudE87Y zxpFFszQ4!k_5I^r@(vIVW&m=2#1NuhFv*L>@MW^~ zFeEmPM63ULR&eEZo+TK7U;%Mr0EM~@eFB+)40fj-5kL&0ARL$s-yq5{0w78X@}hc^ zyqN%)V1Wfh$W%rkkx2(40T32|FxfN`6Hxg%`0pLW&pQY3+wj;08WRx0IheB;I}1uy z6~Bmx;a`CP-~tT*AW!spka{o((BCa0u5%fE`SWfN2qX+Zc#wi^lCw>~JP-(|n0*)_ z?+Mz1!;bI{Gp3*>_J*N|^tyYLDE7#>i&?q!9L6$9t@O@^_xh<+Ezz!M4%TN=#Chw) z7K*i=qgK%POpYMknsTL6XF&eujdX6i)tjaozF%+Gi9DPmxpdtmN)S+BFezyr^KKa3NcfPm9XvOl%a;@zL=Pbl^D~fVMX6mOS+`TZx(KDg?MbQ4j zhm~7Mg?Mn3@(T@^u*x4^NcWZl=6zDFKGqne)JvhQIkF9K54qShe$5CU?C-b`A0t>f zj&vm0x`i}1YMu#_3tel&DOwi>(k-;C{Evq2BMeKXb}W%&HTM1~vo!}60s)}yPXLg# z6U8u3FhoLPc373TOM_PBZ z(D?djnrel(rB8oPg?6E*ohh3;FhQ1A*;0aD2^Y^AEYo(&s!F?jymuCk1arB-nroV@ z?563Au+VEQ%WvbS8z}J;LxD>IgS_+k3Zv@F3cG}}{P)lY`#_QB)l;lXKVf;NuB!0) z7sjQ~R5Y{k6*6I$w*vmmFDbbi?VAU`!|EWid{$j3yDUI=3{pE^>pIvR``o7GHqKPH zPJYb%YyqY%vQ+a-r*ih_`?F2#oeYm0#BfJ5iAa( zB^+lZL@M*!81KlkiA{2+*Sidca&}#v{ifOZ8E-++QJrDyhye%Q6N%ER875D}0pmN8wfzAOeqvI*WrkAe{~Jv$kSdW~<0 zbI7?Br@B0hcz=0n>~o23_Jx{iUyvePd(Lr_-MmEwO|*l)bFm$pPosjGG^y@HTQ2TJ z<41@DnKF!iH}1ia^B=Ij2{K>8NRPGf-}~JP!FE&1#@g%Nk`i=3q)$a`q~z8qUcJ2k zBYp*5p%~0~Q3C3{dk(nInjwO@9IQ4)UC4-iG#0&R<@NG#)#BqxXI=7rove(o7XC)Q zX>`+@$#DFDK!z?J#wl}I^>e*`*JOW5caZgr*W2~is5*nLa+zY76k;>Sq91AdST$QU zzO~jcD!z**`UGWEPIim_xH41oo5ANqZYbwsWk$W!yW@nC2zZ`gP(ophz8wK7)b@Lb zj3Sc7_V@Orovh3dgJ=vbXF5%M;uh7fx13`La;*HeUAh;n?ypR3a5Br5u=e z8o$;tPln4RNmhEu{&jc8qK^rP*kLRkw2UJefYSfz_J;<6e@bTCdkjG8N8gTT^-w{q S!2iN+TZ-D@Y@E#TsJ{Vbnvg&M literal 0 HcmV?d00001 diff --git a/backend/public.kfs b/backend/public.kfs new file mode 100644 index 0000000000000000000000000000000000000000..9014a3bd037dbff12afaa0ec1195a100a57b70d8 GIT binary patch literal 551 zcmZ4UmVvdnh(RPPu`E%qI5oMnD6^ze&pWj;D79ekPyfvwvz9tDF|hbBa3{^I7}{8%M|kCI*Iz0tN;~HG?Kb zB?DeIPOUbNw(q=*jEt-d%uS5^3_x)%rY1&4h7C`4)QZM4{#8>oZ89mkFJTpER<1vD z&;0b}%Imix9o7px^>&^pyLR^bcLr1QmDx|XH27rvVT<@{``5Mf>tfmE`_G9)3mlo; zaZ2lw=(H&_8;`lYIIwMA*7?)6OM^nw)_%2W-kh`CJZj^bdGn9u*31e_-gVTZ;zd5rk#p%X|H=o|@@_HY!P=A73y41b}Q$LzE3aX0V@GCc1C2?`Zj*Wi}#d?^U zrS2-KvPvIMHjF*2;&_4YNQS$&{^e+pxciFSLMLUnY|C=F=xaPvPrgoTR}}mv^!F(fGb00I2?J|{o~eOl rT@iyMwkQP$H3Jj~0mHV4fe)+>6qkCgd8N6?lE4^Y3kY@c@pJ|NvT@Hs literal 0 HcmV?d00001 diff --git a/backend/src/main/java/com/example/backend/anwprj/DataBaseHandler.java b/backend/src/main/java/com/example/backend/anwprj/DataBaseHandler.java index 2d00b24..c45fe5e 100644 --- a/backend/src/main/java/com/example/backend/anwprj/DataBaseHandler.java +++ b/backend/src/main/java/com/example/backend/anwprj/DataBaseHandler.java @@ -1,10 +1,10 @@ package com.example.backend.anwprj; +import com.example.backend.anwprj.Encryption.RSA; import com.example.backend.anwprj.Days.Day; import com.example.backend.anwprj.Entries.Entry; import com.example.backend.anwprj.Semesters.Semester; import com.example.backend.anwprj.Users.User; -import com.example.backend.anwprj.Users.UserSessionIDHandler; import java.sql.*; import java.util.ArrayList; @@ -29,6 +29,7 @@ public class DataBaseHandler private Connection connection; //sql statement private Statement st; + private boolean encrypted = false; public DataBaseHandler() { @@ -380,7 +381,18 @@ public class DataBaseHandler try { - st.executeUpdate("insert into users (firstname, lastname, mail, password, permission) values (" + "'" + user.getFirstName() + "', '" + user.getLastName() + "', '" + user.getMail() + "', '" + user.getPassword() + "', " + 0 + ")"); + String password = user.getPassword(); + if(encrypted) + { + RSA rsa = RSA.getInstance(); + byte[] psw = rsa.loadByteArray(password); + try { + password = rsa.decrypt(psw); + } catch (Exception e) { + e.printStackTrace(); + } + } + st.executeUpdate("insert into users (firstname, lastname, mail, password, permission) values (" + "'" + user.getFirstName() + "', '" + user.getLastName() + "', '" + user.getMail() + "', '" + password + "', " + 0 + ")"); return getUser(user.getMail(), user.getPassword()); } catch (Exception e) { @@ -393,13 +405,25 @@ public class DataBaseHandler { try { + String password = user.getPassword(); + if(encrypted) + { + RSA rsa = RSA.getInstance(); + byte[] psw = rsa.loadByteArray(password); + try { + password = rsa.decrypt(psw); + } catch (Exception e) { + e.printStackTrace(); + } + } + if(!elevationRequestByAdmin) { st.executeUpdate("update users set " + "firstname='" + user.getFirstName() + "', " + "lastname='" + user.getLastName() + "', " + "mail='" + user.getMail() + "', " + - "password='" + user.getPassword() + "' " + + "password='" + password + "' " + "where id=" + id); } else @@ -408,7 +432,7 @@ public class DataBaseHandler "firstname='" + user.getFirstName() + "', " + "lastname='" + user.getLastName() + "', " + "mail='" + user.getMail() + "', " + - "password='" + user.getPassword() + "'," + + "password='" + password + "'," + "permission=" + user.getPermissions() + "where id=" + id); } diff --git a/backend/src/main/java/com/example/backend/anwprj/Encryption/RSA.java b/backend/src/main/java/com/example/backend/anwprj/Encryption/RSA.java new file mode 100644 index 0000000..16418ca --- /dev/null +++ b/backend/src/main/java/com/example/backend/anwprj/Encryption/RSA.java @@ -0,0 +1,58 @@ +package com.example.backend.anwprj.Encryption; + +import javax.crypto.Cipher; +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.security.*; + +public class RSA { + + private PublicKey publicKey; + private PrivateKey privateKey; + + private static RSA instance = null; + + public static RSA getInstance() + { + if(instance == null) + { + instance = new RSA(); + } + + return instance; + } + + private RSA(){} + + public String decrypt(byte[] text) throws Exception + { + readKeyPairs(); + var cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); + cipher.init(Cipher.DECRYPT_MODE, privateKey); + var plainText = cipher.doFinal(text); + return new String(plainText, StandardCharsets.US_ASCII); + } + + private void readKeyPairs() throws Exception + { + var publicInput = new ObjectInputStream(new FileInputStream(new File("./public.kfs"))); + publicKey = (PublicKey) publicInput.readObject(); + publicInput.close(); + + var privateInput = new ObjectInputStream(new FileInputStream(new File("./private.kfs"))); + privateKey = (PrivateKey) privateInput.readObject(); + privateInput.close(); + } + + public byte[] loadByteArray(String text) + { + String[] split = text.split(","); + byte[] output = new byte[split.length]; + for(int i = 0; i < split.length; i++) + { + output[i] = Byte.parseByte(split[i]); + } + + return output; + } +} diff --git a/backend/src/main/java/com/example/backend/anwprj/controller/UserController.java b/backend/src/main/java/com/example/backend/anwprj/controller/UserController.java index 8ca16c5..8b4cf18 100644 --- a/backend/src/main/java/com/example/backend/anwprj/controller/UserController.java +++ b/backend/src/main/java/com/example/backend/anwprj/controller/UserController.java @@ -1,5 +1,6 @@ package com.example.backend.anwprj.controller; +import com.example.backend.anwprj.Encryption.RSA; import com.example.backend.anwprj.DataBaseHandler; import com.example.backend.anwprj.Users.User; import com.example.backend.anwprj.Users.UserPermissions; @@ -44,6 +45,18 @@ public class UserController { @GetMapping("/users") public ResponseEntity login(@RequestParam(name = "mail") String mail, @RequestParam(name = "password") String password) { //generate a session id for the user trying to login + boolean isEncrypted = true; + if(isEncrypted) + { + RSA rsa = RSA.getInstance(); + byte[] psw = rsa.loadByteArray(password); + try { + password = rsa.decrypt(psw); + } catch (Exception e) { + e.printStackTrace(); + } + } + String sessionID = UserSessionIDHandler.addUser(mail, password); return new ResponseEntity<>(sessionID, HttpStatus.OK);