Verschlüsselung

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
 
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
 
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?
 
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
 
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
 
Der Punkt ist, dass Du das mit der Firebase-Authentication schon erschlagen hast. Daher brauchst Du das nicht nochmal zu machen.
 
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.
 
Wenn Du den Benutzer via Firebase Authentication angelegt hast (so wie in Deinem Code): natürlich nicht. Das wäre ja noch schöner.
 
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.
 
@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 :)
 
Passende Stellenanzeigen aus deiner Region:

Oben