SDK Enkripsi adalah pustaka enkripsi sisi klien yang digunakan bersama dengan Key Management Service (KMS). Dengan SDK ini, Anda dapat mengenkripsi dan mendekripsi data, serta menandatangani dan memverifikasi tanda tangan. Panduan ini menjelaskan cara menggunakan SDK Enkripsi untuk Java dalam mengenkripsi dan mendekripsi data.
Informasi latar belakang
Untuk informasi lebih lanjut tentang contoh kode, kunjungi alibabacloud-encryption-sdk-java.
Instal SDK Enkripsi di mesin lokal Anda
Kompilasi dan instal SDK Enkripsi.
git clone https://github.com/aliyun/alibabacloud-encryption-sdk-java.git cd alibabacloud-encryption-sdk-java mvn clean install -DskipTestsTambahkan dependensi ke proyek Anda.
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>alibabacloud-encryption-sdk-java</artifactId> <version>X.X.X</version> </dependency>
Instal SDK Enkripsi dari repositori Maven
Tambahkan dependensi alibabacloud-encryption-sdk-java ke proyek Anda. Proyek Anda akan secara otomatis mengunduh paket Java yang diterbitkan oleh SDK Enkripsi dari repositori Maven.
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-encryption-sdk-java</artifactId>
<version>X.X.X</version>
</dependency>Untuk informasi lebih lanjut tentang versi terbaru SDK Enkripsi, kunjungi Alibaba Cloud Encryption SDK for Java.
Contoh enkripsi dan dekripsi data
Pasangan AccessKey akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan pasangan AccessKey untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin. Hindari menyimpan ID AccessKey dan Rahasia AccessKey dalam kode proyek Anda karena dapat menyebabkan kebocoran dan membahayakan keamanan semua sumber daya akun Anda.
Dalam contoh ini, pasangan AccessKey disimpan dalam variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET untuk mengimplementasikan autentikasi identitas.
Untuk informasi lebih lanjut tentang cara mengonfigurasi informasi autentikasi, lihat Kelola Kredensial Akses.
Metode konfigurasi variabel lingkungan bervariasi berdasarkan sistem operasi. Untuk informasi lebih lanjut, lihat Konfigurasikan Variabel Lingkungan di Linux, macOS, dan Windows.
Enkripsi dan dekripsi data tipe larik byte.
public class BasicEncryptionExample { private static final String ACCESS_KEY_ID = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); private static final String ACCESS_KEY_SECRET = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); private static final String CMK_ARN = "acs:kms:RegionId:UserId:key/CmkId"; private static final byte[] PLAIN_TEXT = "Hello World".getBytes(StandardCharsets.UTF_8); public static void main(String[] args) { // 1. Konfigurasikan parameter untuk mengakses Alibaba Cloud. AliyunConfig config = new AliyunConfig(); config.withAccessKey(ACCESS_KEY_ID, ACCESS_KEY_SECRET); // 2. Buat objek SDK dan tentukan parameter yang digunakan untuk mengakses Alibaba Cloud. AliyunCrypto aliyunSDK = new AliyunCrypto(config); // 3. Buat penyedia yang menyediakan kunci data atau tanda tangan. BaseDataKeyProvider provider = new DefaultDataKeyProvider(CMK_ARN); // Konfigurasikan algoritma. Algoritma default adalah AES_GCM_NOPADDING_256. //provider.setAlgorithm(CryptoAlgorithm.SM4_GCM_NOPADDING_128); // 4. Konfigurasikan konteks enkripsi. Map<String, String> encryptionContext = new HashMap<>(); encryptionContext.put("one", "one"); encryptionContext.put("two", "two"); // 5. Panggil operasi Enkripsi dan Dekripsi. CryptoResult<byte[]> cipherResult = aliyunSDK.encrypt(provider, PLAIN_TEXT, encryptionContext); CryptoResult<byte[]> plainResult = aliyunSDK.decrypt(provider, cipherResult.getResult()); Assert.assertArrayEquals(PLAIN_TEXT, plainResult.getResult()); } }CatatanUntuk informasi lebih lanjut tentang kode lengkap, kunjungi SimpleEncryptAndDecryptSample.java.
Untuk informasi tentang cara memperoleh ID AccessKey dan Rahasia AccessKey, lihat Buat Pasangan AccessKey.
Enkripsi dan dekripsi data tipe aliran byte.
public class FileStreamSample { private static final String FILE = "README.md"; // accessKeyId accessKeySecret private static final String ACCESS_KEY_ID = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); private static final String ACCESS_KEY_SECRET = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); // Sistem log. private static final Logger LOGGER = LoggerFactory.getLogger(FileStreamSample.class); // ID kunci master pelanggan (CMK) dalam format Nama Sumber Daya Alibaba Cloud (ARN). private static final String CMK_ARN = "acs:kms:RegionId:UserId:key/CmkId"; public static void main(String[] args) throws IOException { AliyunConfig config = new AliyunConfig(); config.withAccessKey(ACCESS_KEY_ID, ACCESS_KEY_SECRET); encryptStream(config); decryptStream(config); Assert.assertEquals(getFileMD5(FILE), getFileMD5(FILE + ".decrypted")); } private static void encryptStream(AliyunConfig config) throws IOException { // 1. Buat objek SDK dan tentukan parameter yang digunakan untuk mengakses Alibaba Cloud. AliyunCrypto aliyunSDK = new AliyunCrypto(config); // 2. Konfigurasikan konteks enkripsi. final Map<String, String> encryptionContext = new HashMap<>(); encryptionContext.put("this", "context"); encryptionContext.put("can help you", "to confirm"); encryptionContext.put("this data", "is your original data"); // 3. Buat penyedia yang menyediakan kunci data. BaseDataKeyProvider provider = new DefaultDataKeyProvider(CMK_ARN); // 4. Buat aliran masukan dan keluaran. FileInputStream inputStream = new FileInputStream(FILE); FileOutputStream outputStream = new FileOutputStream(FILE + ".encrypted"); // 5. Panggil operasi Enkripsi. try { aliyunSDK.encrypt(provider, inputStream, outputStream, encryptionContext); } catch (InvalidAlgorithmException e) { System.out.println("Gagal."); System.out.println("Pesan kesalahan: " + e.getMessage()); } } private static void decryptStream(AliyunConfig config) throws IOException { // 1. Buat objek SDK dan tentukan parameter yang digunakan untuk mengakses Alibaba Cloud. AliyunCrypto aliyunSDK = new AliyunCrypto(config); // 2. Buat penyedia yang menyediakan kunci data. BaseDataKeyProvider provider = new DefaultDataKeyProvider(CMK_ARN); // 3. Buat aliran masukan dan keluaran. FileInputStream inputStream = new FileInputStream(FILE + ".encrypted"); FileOutputStream outputStream = new FileOutputStream(FILE + ".decrypted"); // 4. Panggil operasi Dekripsi. try { aliyunSDK.decrypt(provider, inputStream, outputStream); } catch (InvalidAlgorithmException e) { System.out.println("Gagal."); System.out.println("Pesan kesalahan: " + e.getMessage()); } } private static String getFileMD5(String fileName) { File file = new File(fileName); if (!file.isFile()) { return null; } MessageDigest digest; byte[] buffer = new byte[4096]; try (FileInputStream in = new FileInputStream(file)){ digest = MessageDigest.getInstance("MD5"); int len; while ((len = in.read(buffer)) != -1) { digest.update(buffer, 0 , len); } return Hex.encodeHexString(digest.digest()); } catch (Exception e) { e.printStackTrace(); } return null; } }