Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Adakah yang tahu teknik enkripsi apa yang digunakan JDeveloper/SQL Developer untuk mempertahankan kredensial?

Bagi yang penasaran, apa yang sebenarnya Anda lihat adalah kunci rahasia yang digabungkan dengan kata sandi terenkripsi. Misalnya, saya mencoba mengenkripsi kata sandi "SAILBOAT" menggunakan:

DatabaseProviderHelper.goingOut("SAILBOAT")

Dalam contoh khusus ini, hasilnya adalah:

0527C290B40C41D71139B5E7A4446E94D7678359087249A463

Byte pertama adalah konstan:

05

8 byte berikutnya mewakili kunci rahasia yang dibuat secara acak (untuk sandi DES):

27C290B40C41D711

Byte yang tersisa adalah kata sandi terenkripsi:

39B5E7A4446E94D7678359087249A463

Oleh karena itu, untuk mendekripsi kata sandi, Anda cukup menggunakan ini:

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. string literal terlalu panjang - cara menetapkan data xml panjang ke tipe data gumpalan di Oracle 11g r2

  2. Bagaimana saya bisa mengatur format waktu tanggal khusus di Oracle SQL Developer?

  3. SQL Server setara dengan fungsi WM_CONCAT

  4. Memulai dengan Oracle LiveSQL

  5. Menghapus baris duplikat dari tabel di Oracle