Enkripsi dan dekripsi adalah operasi bisnis yang dapat dilakukan melalui gateway bersama atau gateway khusus. Topik ini menjelaskan cara menggunakan kunci simetris untuk enkripsi dan dekripsi dengan Alibaba Cloud SDK.
OpenAPI Terkait
Perbedaan konfigurasi antara gateway bersama dan gateway khusus
Satu-satunya perbedaan antara penggunaan gateway bersama dan gateway khusus terletak pada konfigurasi dalam inisialisasi klien:
Parameter | Gateway bersama | Gateway khusus |
endpoint | Endpoint gateway bersama harus dikonfigurasi dengan salah satu format berikut:
| Endpoint gateway khusus harus dikonfigurasi mengikuti format: |
ca | Tidak diperlukan. |
|
Enkripsi dan dekripsi melalui gateway bersama
Contoh lengkap
Enkripsi
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* :
* <p>Gunakan ID AccessKey dan Rahasia AccessKey Anda untuk menginisialisasi klien.</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.kms20160120.Client createClient() throws Exception {
// Jika kode proyek bocor, pasangan AccessKey mungkin bocor dan sumber daya di akun Anda menjadi tidak aman. Kode berikut hanya untuk referensi.
// Kami merekomendasikan agar Anda menggunakan Token Layanan Keamanan (STS), yang memberikan keamanan lebih tinggi. Untuk informasi lebih lanjut tentang metode autentikasi, lihat https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials.
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi dalam lingkungan runtime kode.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi dalam lingkungan runtime kode.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Untuk informasi tentang endpoint, lihat https://api.alibabacloud.com/product/Kms.
config.endpoint = "kms.ap-southeast-1.aliyuncs.com";
return new com.aliyun.kms20160120.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.kms20160120.Client client = Sample.createClient();
com.aliyun.kms20160120.models.EncryptRequest encryptRequest = new com.aliyun.kms20160120.models.EncryptRequest()
.setPlaintext("MzcyOTI5MTk5MTEyNDU3****")
.setKeyId("key-hzz65f17868e6cl0n****");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// Jika Anda menyalin dan menjalankan kode contoh, tulis kode Anda sendiri untuk menampilkan respons dari operasi API jika diperlukan
client.encryptWithOptions(encryptRequest, runtime);
} catch (TeaException error) {
// Dalam contoh ini, kesalahan dicetak. Dalam proyek aktual Anda, tangani kesalahan berdasarkan kebutuhan bisnis Anda.
// Cetak pesan kesalahan
System.out.println(error.getMessage());
// Berikan URL untuk pemecahan masalah
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// Dalam contoh ini, kesalahan dicetak. Dalam proyek aktual Anda, tangani kesalahan berdasarkan kebutuhan bisnis Anda.
// Cetak pesan kesalahan
System.out.println(error.getMessage());
// Berikan URL untuk pemecahan masalah
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}Dekripsi
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* :
* <p>Gunakan ID AccessKey dan Rahasia AccessKey Anda untuk menginisialisasi klien.</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.kms20160120.Client createClient() throws Exception {
// Jika kode proyek bocor, pasangan AccessKey mungkin bocor dan sumber daya di akun Anda menjadi tidak aman. Kode berikut hanya untuk referensi.
// Kami menyarankan Anda menggunakan Token Layanan Keamanan (STS), yang memberikan keamanan lebih tinggi. Untuk informasi lebih lanjut tentang metode autentikasi, lihat https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials.
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi dalam lingkungan runtime kode.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi dalam lingkungan runtime kode.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Untuk informasi tentang titik akhir, lihat https://api.alibabacloud.com/product/Kms.
config.endpoint = "kms.ap-southeast-1.aliyuncs.com";
return new com.aliyun.kms20160120.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.kms20160120.Client client = Sample.createClient();
com.aliyun.kms20160120.models.DecryptRequest decryptRequest = new com.aliyun.kms20160120.models.DecryptRequest()
.setCiphertextBlob("a2V5LWh6ejY1Zj****");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// Jika Anda menyalin dan menjalankan kode sampel, tulis kode Anda sendiri untuk menampilkan respons dari Operasi API jika diperlukan
client.decryptWithOptions(decryptRequest, runtime);
} catch (TeaException error) {
// Dalam contoh ini, kesalahan dicetak. Dalam proyek aktual Anda, tangani kesalahan berdasarkan kebutuhan bisnis Anda.
// Cetak pesan kesalahan
System.out.println(error.getMessage());
// Berikan URL untuk pemecahan masalah
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// Dalam contoh ini, kesalahan dicetak. Dalam proyek aktual Anda, tangani kesalahan berdasarkan kebutuhan bisnis Anda.
// Cetak pesan kesalahan
System.out.println(error.getMessage());
// Berikan URL untuk pemecahan masalah
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}Analisis contoh
Inisialisasi klien
Panggil operasi Encrypt untuk mengenkripsi data menggunakan kunci simetris
Panggil operasi Decrypt untuk mendekripsi ciphertext menggunakan kunci simetris
Enkripsi dan dekripsi melalui gateway khusus
Contoh lengkap
Enkripsi
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* :
* <p>Gunakan ID AccessKey dan Rahasia AccessKey Anda untuk menginisialisasi klien.</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.kms20160120.Client createClient() throws Exception {
// Jika kode proyek bocor, pasangan AccessKey mungkin bocor dan sumber daya di akun Anda menjadi tidak aman. Kode berikut hanya untuk referensi.
// Kami menyarankan Anda menggunakan token Layanan Keamanan (STS), yang memberikan keamanan lebih tinggi. Untuk informasi lebih lanjut tentang metode autentikasi, lihat https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials.
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi dalam lingkungan runtime kode.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi dalam lingkungan runtime kode.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Titik akhir gateway khusus
config.endpoint = "kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com";
// Sertifikat CA instans KMS
config.ca = "-----BEGIN CERTIFICATE-----MIIDuzCCAqOgAwIBAgIJALTKwWAjvbMiMA0GCS****";
return new com.aliyun.kms20160120.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.kms20160120.Client client = Sample.createClient();
com.aliyun.kms20160120.models.EncryptRequest encryptRequest = new com.aliyun.kms20160120.models.EncryptRequest()
.setPlaintext("MzcyOTI5MTk5MTEyNDU3****")
.setKeyId("key-hzz65f17868e6cl0n****");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// Jika Anda menyalin dan menjalankan kode contoh, tulis kode Anda sendiri untuk menampilkan respons dari Operasi API jika diperlukan
client.encryptWithOptions(encryptRequest, runtime);
} catch (TeaException error) {
// Dalam contoh ini, kesalahan dicetak. Dalam proyek aktual Anda, tangani kesalahan berdasarkan kebutuhan bisnis Anda.
// Cetak pesan kesalahan
System.out.println(error.getMessage());
// Berikan URL untuk pemecahan masalah
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// Dalam contoh ini, kesalahan dicetak. Dalam proyek aktual Anda, tangani kesalahan berdasarkan kebutuhan bisnis Anda.
// Cetak pesan kesalahan
System.out.println(error.getMessage());
// Berikan URL untuk pemecahan masalah
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}Dekripsi
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* :
* <p>Gunakan ID AccessKey dan Rahasia AccessKey Anda untuk menginisialisasi klien.</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.kms20160120.Client createClient() throws Exception {
// Jika kode proyek bocor, pasangan AccessKey mungkin bocor dan sumber daya di akun Anda menjadi tidak aman. Kode berikut hanya untuk referensi.
// Kami menyarankan Anda menggunakan Token Layanan Keamanan (STS), yang memberikan keamanan lebih tinggi. Untuk informasi lebih lanjut tentang metode autentikasi, lihat https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials.
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi dalam lingkungan runtime kode.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi dalam lingkungan runtime kode.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Titik akhir gateway spesifikasi khusus
config.endpoint = "kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com";
// Sertifikat CA instance KMS
config.ca = "-----BEGIN CERTIFICATE-----MIIDuzCCAqOgAwIBAgIJALTKwWAjvbMiMA0GCS****";
return new com.aliyun.kms20160120.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.kms20160120.Client client = Sample.createClient();
com.aliyun.kms20160120.models.DecryptRequest decryptRequest = new com.aliyun.kms20160120.models.DecryptRequest()
.setCiphertextBlob("a2V5LWh6ejY1Zj****");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// Jika Anda menyalin dan menjalankan kode sampel, tulis kode Anda sendiri untuk menampilkan respons dari Operasi API jika diperlukan
client.decryptWithOptions(decryptRequest, runtime);
} catch (TeaException error) {
// Dalam contoh ini, kesalahan dicetak. Dalam proyek aktual Anda, tangani kesalahan berdasarkan kebutuhan bisnis Anda.
// Cetak pesan kesalahan
System.out.println(error.getMessage());
// Berikan URL untuk pemecahan masalah
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// Dalam contoh ini, kesalahan dicetak. Dalam proyek aktual Anda, tangani kesalahan berdasarkan kebutuhan bisnis Anda.
// Cetak pesan kesalahan
System.out.println(error.getMessage());
// Berikan URL untuk pemecahan masalah
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}