Class: Aws::KMS::Client - AWS SKD for Ruby V2を参考に使ってみた。
基本形
require 'aws-sdk-core'
kms = Aws::KMS::Client.new
# 暗号
resp = kms.encrypt(
key_id: 'be8a4c03-4816-48ba-a3c9-xxxxxxxx', # ↓arnでも可
# key_id: 'arn:aws:kms:ap-northeast-1:1234567890:key/be8a4c03-4816-48ba-a3c9-xxxxxxxx',
plaintext: 'ここに暗号化したい文字列など')
# 復号
puts kms.decrypt(ciphertext_blob: resp.ciphertext_blob).plaintext
補足) key_idにalias(鍵の名前)は使えませんでした。 (2014/11/19)
Authenticated Encryption
require 'aws-sdk-core'
kms = Aws::KMS::Client.new
# 暗号
resp = kms.encrypt(
key_id: 'be8a4c03-4816-48ba-a3c9-xxxxxxxx',
plaintext: 'ここに暗号化したい文字列など',
encryption_context: { EncryptionContextKey: '秘密のパスワード(はーと)' })
# 復号
puts kms.decrypt(
ciphertext_blob: resp.ciphertext_blob,
encryption_context: { EncryptionContextKey: '秘密のパスワード(はーと)' }
).plaintext
復号時に指定したEncryptionContextKeyが正しくない場合例外が投げられました。
さいごに
可逆暗号がこんなに簡単にできる。すごい。
バイナリを暗号化したい場合はBase64エンコードでもすればいいですね。