Oracle
 sql >> база данни >  >> RDS >> Oracle

Някой знае ли каква техника за криптиране използва JDeveloper/SQL Developer за запазване на идентификационни данни?

За любопитните, това, което всъщност виждате, е тайният ключ, свързан с криптираната парола. Например, опитах да криптирам паролата „SAILBOAT“ с помощта на:

DatabaseProviderHelper.goingOut("SAILBOAT")

В този конкретен случай резултатът беше:

0527C290B40C41D71139B5E7A4446E94D7678359087249A463

Първият байт е постоянен:

05

Следващите 8 байта представляват произволно генерирания таен ключ (за DES шифъра):

27C290B40C41D711

Останалите байтове са криптираната парола:

39B5E7A4446E94D7678359087249A463

Следователно, за да дешифрирате паролата, просто използвайте това:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разделяне на низ по позиция на разделител с помощта на Oracle SQL

  2. Как мога да извлека файлове от поле на Oracle BLOB?

  3. Команди за архивиране на RMAN

  4. Oracle CREATE TABLE команда в PL/SQL с 10 примера

  5. Как да изчистите пула за връзки ODP.NET при грешки при свързване?