Setelah menginisialisasi instance SDK KMS, Anda dapat menggunakannya untuk memanggil API Encrypt dan Decrypt guna melakukan enkripsi dan dekripsi data. Topik ini menyediakan contoh kode terkait.
Contoh lengkap
Penjelasan contoh
Inisialisasi klien
Anda dapat membuat objek klien SDK instance KMS menggunakan konten ClientKey atau jalur file ClientKey.
import (
dedicatedkmsopenapi "github.com/aliyun/alibabacloud-dkms-gcs-go-sdk/openapi"
dedicatedkmssdk "github.com/aliyun/alibabacloud-dkms-gcs-go-sdk/sdk"
"github.com/alibabacloud-go/tea/tea"
)
// Gunakan konten ClientKey untuk membuat objek klien SDK instance KMS.
func getDkmsClientByClientKeyContent() *dedicatedkmssdk.Client {
// Buat konfigurasi klien SDK instance KMS.
config := &dedicatedkmsopenapi.Config{
// Setel protokol koneksi ke "https". Layanan instance KMS hanya mengizinkan akses melalui protokol HTTPS.
Protocol: tea.String("https"),
// Ganti dengan konten file ClientKey.
ClientKeyContent: tea.String("<CLIENT_KEY_CONTENT>"),
// Ganti dengan kata sandi enkripsi yang dimasukkan saat membuat ClientKey.
Password: tea.String("<CLIENT_KEY_PASSWORD>"),
// Setel endpoint ke <KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com.
Endpoint: tea.String("<ENDPOINT>"),
}
// Buat objek klien SDK instance KMS.
client, err := dedicatedkmssdk.NewClient(config)
if err != nil {
// Penanganan abnormal.
panic(err)
}
return client
}
// Gunakan jalur file ClientKey untuk membuat objek klien SDK instance KMS.
func getDkmsClientByClientKeyFile() *dedicatedkmssdk.Client {
// Buat konfigurasi klien DKMS.
config := &dedicatedkmsopenapi.Config{
// Setel protokol koneksi ke "https". Layanan instance KMS hanya mengizinkan akses melalui protokol HTTPS.
Protocol: tea.String("https"),
// Ganti dengan jalur file ClientKey.
ClientKeyFile: tea.String("<CLIENT_KEY_FILE>"),
// Ganti dengan kata sandi enkripsi yang dimasukkan saat membuat ClientKey.
Password: tea.String("<CLIENT_KEY_PASSWORD>"),
// Setel endpoint ke <KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com.
Endpoint: tea.String("ENDPOINT"),
}
// Buat objek klien SDK instance KMS.
client, err := dedicatedkmssdk.NewClient(config)
if err != nil {
// Penanganan abnormal.
panic(err)
}
return client
}Panggil API Encrypt untuk mengenkripsi data menggunakan kunci simetris
// Contoh enkripsi simetris.
func encryptSample(client *dedicatedkmssdk.Client, plaintext []byte, keyId string) *AesEncryptContext {
encryptRequest := &dedicatedkmssdk.EncryptRequest{
KeyId: tea.String(keyId),
Plaintext: plaintext,
}
// Verifikasi sertifikat server.
ca, err := ioutil.ReadFile("path/to/caCert.pem")
if err != nil {
panic(err)
}
runtimeOptions := &dedicatedkmsopenapiutil.RuntimeOptions{
Verify: tea.String(string(ca)),
}
// Atau, abaikan sertifikat.
//runtimeOptions := &dedicatedkmsopenapiutil.RuntimeOptions{
// IgnoreSSL: tea.Bool(true),
//}
// Panggil API enkripsi untuk mengenkripsi.
encryptResponse, err := client.EncryptWithOptions(encryptRequest, runtimeOptions)
if err != nil {
panic(err)
}
// ID Kunci.
_keyId := tea.StringValue(encryptResponse.KeyId)
// Saat kunci utama adalah kunci simetris, API dekripsi memerlukan Iv yang dikembalikan oleh enkripsi.
_iv := encryptResponse.Iv
// Ciphertext data.
_cipher := encryptResponse.CiphertextBlob
// Algoritma enkripsi.
_algorithm := tea.StringValue(encryptResponse.Algorithm)
fmt.Println("KeyId:", _keyId)
fmt.Println("CiphertextBlob:", _cipher)
fmt.Println("Iv:", _iv)
fmt.Println("Algorithm:", _algorithm)
fmt.Println("RequestId:", tea.StringValue(encryptResponse.RequestId))
return &AesEncryptContext{
KeyId: _keyId,
Iv: _iv,
CiphertextBlob: _cipher,
Algorithm: _algorithm,
}
}Panggil API Decrypt untuk mendekripsi ciphertext menggunakan kunci simetris
// Contoh dekripsi simetris.
func decryptSample(client *dedicatedkmssdk.Client, ctx *AesEncryptContext) []byte {
decryptRequest := &dedicatedkmssdk.DecryptRequest{
KeyId: tea.String(ctx.KeyId),
CiphertextBlob: ctx.CiphertextBlob, // Ciphertext data.
Iv: ctx.Iv, // Iv yang dikembalikan oleh enkripsi.
Algorithm: tea.String(ctx.Algorithm),
}
// Verifikasi sertifikat server.
ca, err := ioutil.ReadFile("path/to/caCert.pem")
if err != nil {
panic(err)
}
runtimeOptions := &dedicatedkmsopenapiutil.RuntimeOptions{
Verify: tea.String(string(ca)),
}
// Atau, abaikan sertifikat.
//runtimeOptions := &dedicatedkmsopenapiutil.RuntimeOptions{
// IgnoreSSL: tea.Bool(true),
//}
// Panggil API dekripsi untuk mendekripsi.
decryptResponse, err := client.DecryptWithOptions(decryptRequest, runtimeOptions)
if err != nil {
panic(err)
}
// Plaintext data.
_plaintext := decryptResponse.Plaintext
fmt.Println("KeyId:", tea.StringValue(decryptResponse.KeyId))
fmt.Println("Plaintext:", string(_plaintext))
fmt.Println("RequestId:", tea.StringValue(decryptResponse.RequestId))
return decryptResponse.Plaintext
}