Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Membuat kode Java dari komentar dalam bahasa alami
Anda dapat membuat kueri model secara langsung dan menguji hasil yang ditampilkan saat menggunakan
parameter value yang berbeda dengan Konsol Cloud, atau dengan memanggil
Vertex AI API secara langsung.
packageorg.com.passwordmanager.service;importorg.springframework.stereotype.Service;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;@ServicepublicclassEncryptionService{privatefinalSecretKeysecretKey;publicEncryptionService()throwsException{KeyGeneratorkeyGen=KeyGenerator.getInstance("AES");keyGen.init(256);secretKey=keyGen.generateKey();}publicStringencrypt(Stringdata){try{// Create and initialize a Cipher instance for AES encryption// Encrypt the data bytes using the Cipher instance// Encode the encrypted bytes to a Base64 string and return the result// <WRITE CODE HERE>}catch(Exceptione){thrownewRuntimeException("Encryption error",e);}}publicStringdecrypt(StringencryptedData){try{// Create and initialize a Cipher instance for AES decryption// Decode the Base64 string to get the encrypted bytes// Decrypt the encrypted bytes// Convert decrypted bytes to a string and return the result// <WRITE CODE HERE>}catch(Exceptione){thrownewRuntimeException("Decryption error",e);}}}
Menambahkan impor yang diperlukan: Kode kini menyertakan impor yang diperlukan untuk Cipher, Base64, dan StandardCharsets. Penggunaan StandardCharsets.UTF_8 memastikan encoding karakter yang konsisten.
Pembuatan instance dan penggunaan cipher: Class Cipher digunakan dengan benar untuk enkripsi dan dekripsi. Cipher.getInstance("AES") mendapatkan instance cipher AES. cipher.init() menginisialisasi dengan mode yang sesuai (ENCRYPT_MODE atau DECRYPT_MODE) dan kunci rahasia. cipher.doFinal() melakukan enkripsi/dekripsi.
Encoding/decoding Base64:Base64.getEncoder().encodeToString() mengenkode byte terenkripsi menjadi string Base64 untuk memudahkan penyimpanan dan transmisi. Base64.getDecoder().decode() melakukan operasi terbalik.
Penanganan Error: Meskipun kode asli memiliki blok catch, Anda harus menangani pengecualian dengan lebih baik di lingkungan produksi. Pertimbangkan untuk mencatat detail pengecualian ke dalam log untuk tujuan proses debug, bukan hanya menampilkan RuntimeException. Pendekatan yang lebih andal mungkin melibatkan jenis pengecualian kustom untuk penanganan dan pelaporan error yang lebih baik.
Encoding UTF-8: Menggunakan StandardCharsets.UTF_8 secara eksplisit akan mencegah potensi masalah encoding.
Tidak Ada Pengelolaan Kunci Rahasia: Contoh ini tidak memiliki pengelolaan kunci rahasia yang tepat. Menyimpan kunci langsung dalam class sangat tidak aman. Dalam aplikasi di dunia nyata, Anda memerlukan sistem pengelolaan kunci yang aman (seperti key vault) untuk menyimpan dan mengambil kunci rahasia. Contoh ini hanya untuk tujuan ilustrasi dan tidak boleh digunakan dalam sistem produksi tanpa pengelolaan kunci yang andal.
Pertimbangkan Library Kriptografi khusus: Untuk sistem produksi, pertimbangkan untuk menggunakan library kriptografi yang telah diseleksi dengan baik yang menangani pengelolaan kunci, padding, dan pertimbangan keamanan lainnya dengan lebih andal. Bouncy Castle adalah pilihan populer.
Peningkatan Lebih Lanjut (Di luar cakupan perbaikan langsung ini):
Rotasi Kunci: Terapkan mekanisme untuk memutar kunci rahasia secara berkala guna meningkatkan keamanan.
Padding: Menentukan skema padding secara eksplisit (mis., PKCS5Padding) saat membuat instance Cipher untuk menghindari potensi kerentanan. Hal ini sangat penting untuk enkripsi yang aman.
Initialization Vector (IV): Untuk AES, penggunaan IV sangat penting untuk keamanan. IV harus dibuat secara acak dan disertakan dengan data terenkripsi.
Fungsi Derivasi Kunci (KDF): Daripada langsung menggunakan kunci yang dihasilkan, pertimbangkan untuk menggunakan KDF (seperti PBKDF2) untuk mendapatkan kunci dari sandi atau kunci master. Tindakan ini akan menambahkan lapisan keamanan ekstra.
Pembuatan Angka Acak yang Aman: Pastikan Anda menggunakan generator angka acak (CSPRNG) yang aman secara kriptografis untuk membuat IV dan angka acak lainnya yang digunakan dalam proses enkripsi.
Kode yang ditingkatkan ini memberikan penerapan enkripsi dan dekripsi AES yang lebih lengkap dan aman (meskipun masih belum siap produksi tanpa pengelolaan kunci) di Java. Jangan lupa untuk memprioritaskan praktik terbaik keamanan saat menangani data sensitif seperti sandi.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2024-12-06 UTC."],[],[]]