Verschlüsselung

Xeno

Mitglied
Moin ich schreibe gerade eine eCommerce APP als vorlage dienen mir mehrere fertige Srcs und 2 Youtube Videos nun habe ich die Registrierung und den Login fertig und möchte eine Verschlüsselung für die Passwörter einbauen den Code habe ich auch schon
Java:
public class AESCrypt
{
    public static final String ALGORITHM = "AES";
    public static final String KEY = "1gehs657hFfdQJ78";

    public static String encrypt(String value) throws Exception
    {
        Key key = generateKey();
        Cipher cipher = Cipher.getInstance(AESCrypt.ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte [] encryptedByteValue = cipher.doFinal(value.getBytes("utf-8"));
        String encryptedValue64 = Base64.encodeToString(encryptedByteValue, Base64.DEFAULT);
        return encryptedValue64;

    }

    public static String decrypt(String value) throws Exception
    {
        Key key = generateKey();
        Cipher cipher = Cipher.getInstance(AESCrypt.ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] decryptedValue64 = Base64.decode(value, Base64.DEFAULT);
        byte [] decryptedByteValue = cipher.doFinal(decryptedValue64);
        String decryptedValue = new String(decryptedByteValue,"utf-8");
        return decryptedValue;

    }

    private static Key generateKey() throws Exception
    {
        Key key = new SecretKeySpec(AESCrypt.KEY.getBytes(),AESCrypt.ALGORITHM);
        return key;
    }
}

Der Code ist nicht selber geschrieben.

Java:
public class RegisterActivity extends AppCompatActivity {

    private Button regi_btn;
    private EditText umail, upass,upass_conf, uFirstname, uName, uDate, uPhone;
    private ProgressDialog loading;

    private RadioGroup uRadioGroup;

    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthStateListener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        regi_btn = findViewById(R.id.btn_reg);
        umail = findViewById(R.id.email);
        upass = findViewById(R.id.pass);
        uName = findViewById(R.id.uname);


        uRadioGroup = findViewById(R.id.radioGroup);

        mAuth = FirebaseAuth.getInstance();
        mAuthStateListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                try {
                    final String name = uName.getText().toString();
                    int selectID = uRadioGroup.getCheckedRadioButtonId();
                    final RadioButton radioButton = findViewById(selectID);


                    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                    try {
                        final String userID = mAuth.getInstance().getCurrentUser().getUid();
                        DatabaseReference currentUserDb = FirebaseDatabase.getInstance().getReference().child("Users").child(radioButton.getText().toString())
                                .child(userID).child("name");

                        currentUserDb.setValue(name);


                        if (mAuth.getCurrentUser() != null) {
                            user = mAuth.getCurrentUser();
                        }
                    } catch (NullPointerException e) {
                        e.printStackTrace();


                    }


                    if (user != null) {
                        Intent intent4 = new Intent(RegisterActivity.this, MainActivity.class);
                        startActivity(intent4);
                        finish();
                    }

                }catch(Exception e){
                    e.printStackTrace();

                }
            }
        };

        regi_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final String email = umail.getText().toString();
                final String pass  = upass.getText().toString();

                mAuth.createUserWithEmailAndPassword(email, pass).addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {

                        if(!task.isSuccessful()){

                            Toast.makeText(RegisterActivity.this, "sign_up_error" , Toast.LENGTH_SHORT).show();

                        }
                    }
                });
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        mAuth.addAuthStateListener(mAuthStateListener);
    }

    @Override
    protected void onStop() {
        super.onStop();
        mAuth.removeAuthStateListener(mAuthStateListener);
    }
}


Nun zu meiner Frage wie baue ich ihn am besten in die RegisterActivity so das er mir die Verschlüsselten passwört in einer datei namens Keys abspeichert? Ich bedanke mich schon mal für die Hilfe
 
X

Xyz1

Gast
Wäre nicht "AES/CBC/PKCS5Padding" richtiger?

Und genau... wieso möchtest Du in eine Datei speichern? Aber das geht natürlich... einfach passwortweise mit Zeilenumbruch trennen
 

Xeno

Mitglied
Ich bin neu und dachte mir das wäre der richtige ansatz. Wie würdet ihr das den machen? In der DB ne Tabelle mit den verschlüsselten pws? Wie könnte ich das bei Firebase umsetzen bzw ist es überhauptmöglich?
 

Xeno

Mitglied
Ich möchte das dass passwort von mir oder andere nicht einsehbar ist und deswegen eine Verschlüsselung. Ich denke mal wen man will kann man sich die Email und das PW unverschlüsselt angucken (bis jetzt noch nicht versucht) und dann versuchen mit dieser combo auf sämtliche seiten zu kommen und das möchte ich mit dieser verschlüsselung umgehen
 

Xeno

Mitglied
Das man die Passwörter in eine Datei speichert. Ich habe damals Server erstellt in der DB war eine Account tabelle mit den Spalten ID und PW die PW's wurden verschlüsselt angezeigt als MD5 Hash und sowas änliches wollte ich für meine App machen nur fehlt mir das wissen dies komplett aus meinem Kopf heraus zu schreiben
 

mihe7

Top Contributor
Der Punkt ist, dass Du das mit der Firebase-Authentication schon erschlagen hast. Daher brauchst Du das nicht nochmal zu machen.
 

mrBrown

Super-Moderator
Mitarbeiter
Ja, natürlich ist Passwörter speichern der richtige Ansatz, wenn man Passwörter Speichern muss.



Die Frage ist aber, ob und wofür du die Passwörter irgendwo speichern musst - also, was du mit den gespeicherten Passwörtern machen musst, wofür die gespeichert sein müssen.

Dass das Passwort nicht auslesbar ist, erreicht man am besten, wenn man es gar nicht, nicht mal verschlüsselt, speichert.
 

mihe7

Top Contributor
Wenn Du den Benutzer via Firebase Authentication angelegt hast (so wie in Deinem Code): natürlich nicht. Das wäre ja noch schöner.
 

Xeno

Mitglied
Vielen Vielen Vielen dank ihr habt mir super Kopfschmerzen gespart. Ich war schon am verzweifeln da ich mich mit verschlüsselungen noch nie auseinander gesetzt habe. Muss ich aber mal unbedingt tun wie man jetzt sieht.
 

mihe7

Top Contributor
@Xeno wie @mrBrown schon schreibt: Passwörter werden nicht mit einem Schlüssel verschlüsselt und dann abgespeichert, sondern - wie Du ja schon geschrieben hast - nur der kryptographischer Hash dazu. Heute aber nicht mehr MD5 sondern SHA-256.

Um Angriffe zu minimieren, wenn die Passwort-DB in fremde Hände gerät, wird noch Salz und ggf. Pfeffer hinzugefügt.

Beides sind Werte, die zum Hashen an das PW angefügt bzw. vorangestellt werden. Der Unterschied ist: Pepper ist ein geheimer "Schlüssel", Salt dagegen ist ein Zufallswert, der entsprechend in der DB gespeichert wird. Letzteres dient einfach dazu, bestimmte Angriffe zu erschweren (Passwörter werden durch das Salt effektiv länger und gleiche Passwörter erhalten unterschiedliche Hashwerte, so dass ein einfaches Durchforsten nach gleichen Passwörtern nicht mehr möglich ist).

Außerdem kann man die Zahl der Hashwert-Berechnungen hochschrauben, damit die Berechnung eines Hashes relativ lange dauert (z. B. 0,5 s). Das stört beim Login nicht, beim Knacken schon :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M pfx-Zertifikat in Tomcat für SSL-Verschlüsselung nutzen Allgemeine Java-Themen 14
P String-Verschlüsselung - Frage zur Sicherheit Allgemeine Java-Themen 21
R Verschlüsselung falsch Allgemeine Java-Themen 3
R Verschlüsselung funktioniert nicht Allgemeine Java-Themen 5
J Passwort Verschlüsselung hash Allgemeine Java-Themen 2
D AES Verschlüsselung / Wirklich AES 128-Bit? Allgemeine Java-Themen 4
I Best Practice Verschlüsselung mit SALT Allgemeine Java-Themen 4
A Mehrfache XOR Verschlüsselung Allgemeine Java-Themen 11
Thallius Moderne sichere synchrone Verschlüsselung mit Java? Allgemeine Java-Themen 3
Ananaskirsche Verschlüsselung mit AES Allgemeine Java-Themen 4
E Verschlüsselung Allgemeine Java-Themen 4
F Schlüsselworte RSA Verschlüsselung implementieren Allgemeine Java-Themen 5
S Key (für AES-Verschlüsselung) aus String Allgemeine Java-Themen 4
M Serialisierung & Verschlüsselung Allgemeine Java-Themen 2
K Problem mit Salted - Verschlüsselung Allgemeine Java-Themen 4
Z Java E-Mail Client mit End-to-End-Verschlüsselung Allgemeine Java-Themen 4
J Verschlüsselung von Text? Allgemeine Java-Themen 2
K Vigenere- Verschlüsselung Allgemeine Java-Themen 13
M Verschlüsselung von Text und Files durch RSA (Encoding Problem) Allgemeine Java-Themen 7
T AES-Verschlüsselung mit eigenem 256 Bit Schlüssel Allgemeine Java-Themen 12
DStrohma Verschlüsselung: SALT aus Passwort generieren? Allgemeine Java-Themen 3
G AES Verschlüsselung nur bis 63 Zeichen Länge Allgemeine Java-Themen 2
M Verschlüsselung mit Cipher Allgemeine Java-Themen 5
B XOR Verschlüsselung Allgemeine Java-Themen 7
S Framework für symetrische und asymetrische Verschlüsselung Allgemeine Java-Themen 3
lumo Verschlüsselung Allgemeine Java-Themen 2
H Verschlüsselung mit Blowfish Allgemeine Java-Themen 14
C Interpreter-Fehler AES verschlüsselung mit MD5 key Allgemeine Java-Themen 6
S AES Verschlüsselung - File Headers korrupt Allgemeine Java-Themen 10
A Datei, UTF-8, NTRU-Verschlüsselung Allgemeine Java-Themen 3
B "Verschlüsselung" mit Passwort (XOR bzw. Modulo) Allgemeine Java-Themen 7
B String Verschlüsselung Allgemeine Java-Themen 6
M Verschlüsselung anwenden Allgemeine Java-Themen 6
J Verschlüsselung Allgemeine Java-Themen 22
T MD5 Verschlüsselung Nullen fehlen? Allgemeine Java-Themen 2
L [Exception] RSA Verschlüsselung. Allgemeine Java-Themen 16
C javamail signatur und verschlüsselung Allgemeine Java-Themen 2
R 128 Bit Verschlüsselung/Entschlüsselung in Java? Allgemeine Java-Themen 6
F RSA-Verschlüsselung Allgemeine Java-Themen 4
S Verschlüsselung in Java Allgemeine Java-Themen 2
G Interessant! Verschlüsselung in Java, Charset in der JVM? Allgemeine Java-Themen 14
D Eigener Key bei AES Verschlüsselung Allgemeine Java-Themen 4
T Verschlüsselung von Dateien Allgemeine Java-Themen 8
S Verschlüsselung - IllegalBlockSizeException Allgemeine Java-Themen 3
G Problem mit RSA Verschlüsselung bei .net und Java Allgemeine Java-Themen 1
D Caesar und Vigenère Verschlüsselung Allgemeine Java-Themen 2
alexpetri Verschlüsselung Allgemeine Java-Themen 13
@ [Sicherheit] Speicherung von Keys für Verschlüsselung Allgemeine Java-Themen 4
P Verschlüsselung in PHP -> Entschlüsselung in Java Allgemeine Java-Themen 2
Lazybone Caeser Verschlüsselung Allgemeine Java-Themen 6
S Verschlüsselung mit Cipher Allgemeine Java-Themen 8
S Verschlüsselung Allgemeine Java-Themen 15
J Problem mit Dateien/XOR-Verschlüsselung Allgemeine Java-Themen 5
G RSA-Verschlüsselung Allgemeine Java-Themen 1
P HMACMD5- Verschlüsselung entschlüsseln Allgemeine Java-Themen 2
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
J Probleme bei XOR verschlüsselung ! Allgemeine Java-Themen 5
G Verschlüsselung in Java Allgemeine Java-Themen 9
M RSA Verschlüsselung Allgemeine Java-Themen 7
J Verschlüsselung von Daten Allgemeine Java-Themen 21

Ähnliche Java Themen

Neue Themen


Oben