Шифрование данных с помощью Google Tink
Tink
Поддерживаются Java
Добавление зависимости
Перед началом работы необходимо добавить зависимости.
Добавьте зависимости с помощью Apache Maven
<dependency>
<groupId>com.yandex.cloud</groupId>
<artifactId>kms-provider-tink</artifactId>
<version>2.6</version>
</dependency>
Выполните команду:
go get github.com/yandex-cloud/kms-clients-go/yckmstink
Шифрование и расшифрование
В коде используются следующие переменные:
endpoint
–api.cloud.yandex.net:443
.credentialProvider
илиcredentials
– определяет способ аутентификации, подробнее читайте в разделе Аутентификация в SDK Yandex Cloud.keyId
– идентификатор ключа KMS.plaintext
– открытый текст.ciphertext
– шифртекст.aad
– AAD-контекст.
Создайте Aead
AeadConfig.register();
KmsClients.add(new YcKmsClient(credentialProvider).withEndpoint(endpoint));
String keyUri = "yc-kms://" + keyId;
Aead kmsAead = KmsClients.get(keyUri).getAead(keyUri);
Aead aead = new KmsEnvelopeAead(AeadKeyTemplates.AES256_GCM, kmsAead);
...
byte[] ciphertext = aead.encrypt(plaintext, aad);
...
byte[] plaintext = aead.decrypt(ciphertext, aad);
Создайте aead
sdk, err := ycsdk.Build(context, ycsdk.Config{
Endpoint: endpoint,
Credentials: credentials,
})
if err != nil {...}
kmsAead := yckmstink.NewYCAEAD(keyId, sdk)
aead := aead.NewKMSEnvelopeAEAD(*aead.AES256GCMKeyTemplate(), kmsAead)
...
ciphertext, err := aead.Encrypt(plaintext, aad)
if err != nil {...}
...
plaintext, err := aead.Decrypt(ciphertext, aad)
if err != nil {...}