sql >> Database >  >> RDS >> Oracle

Weet iemand welke coderingstechniek JDeveloper/SQL Developer gebruikt om inloggegevens te behouden?

Voor de nieuwsgierigen, wat je eigenlijk ziet, is de geheime sleutel die is gekoppeld aan het gecodeerde wachtwoord. Ik heb bijvoorbeeld geprobeerd het wachtwoord "SAILBOAT" te coderen met:

DatabaseProviderHelper.goingOut("SAILBOAT")

In dit specifieke geval was het resultaat:

0527C290B40C41D71139B5E7A4446E94D7678359087249A463

De eerste byte is constant:

05

De volgende 8 bytes vertegenwoordigen de willekeurig gegenereerde geheime sleutel (voor het DES-cijfer):

27C290B40C41D711

De resterende bytes zijn het versleutelde wachtwoord:

39B5E7A4446E94D7678359087249A463

Daarom, om het wachtwoord te ontsleutelen, gebruik je gewoon dit:

public static byte[] decryptPassword(byte[] result) throws GeneralSecurityException {
    byte constant = result[0];
    if (constant != 5) {
        throw new IllegalArgumentException();
    }

    byte[] secretKey = new byte[8];
    System.arraycopy(result, 1, secretKey, 0, 8);

    byte[] encryptedPassword = new byte[result.length - 9];
    System.arraycopy(result, 9, encryptedPassword, 0, encryptedPassword.length);

    byte[] iv = new byte[8];
    for (int i = 0; i < iv.length; i++) {
        iv[i] = 0;
    }

    Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
    cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(secretKey, "DES"), new IvParameterSpec(iv));
    return cipher.doFinal(encryptedPassword);
}


  1. SQL-groep op datumbereik

  2. Zijn kringverwijzingen acceptabel in de database?

  3. Opstartomgeving configureren in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 7

  4. SQLCipher integreren met greenDAO