【发布时间】:2020-11-10 21:22:23
【问题描述】:
我正在尝试备份用于加密/解密数据的保险柜密钥。官方文档说,为了读取密钥,我应该执行以下命令行:
$ vault read transit/keys/orders
Key Value
--- -----
allow_plaintext_backup false
deletion_allowed false
derived false
exportable false
keys map[1:1604988997 2:1604993553 3:1604993556 4:1604993569]
latest_version 4
min_available_version 0
min_decryption_version 1
min_encryption_version 0
name orders
supports_decryption true
supports_derivation true
supports_encryption true
supports_signing false
type aes256-gcm96
如您所知,我有 4 个“钥匙”。为了确保这些数字字符串是正确的键,我决定进行以下操作: 考虑普通的 4111 1111 1111 1111
1- 将纯文本转换为base64并用key n°4加密:
$ vault write transit/encrypt/orders plaintext=$(base64 <<< "4111 1111 1111 1111")
Key Value
--- -----
ciphertext vault:v4:F6hjhlJM8xczv8J20zQTRMWn3RflTd6UhcWLD9NOsEt+MQJjy4LlyAY5SY6UyydN
key_version 4
2- 获取上面生成的密文并使用密钥 n°4 1604993569 和 AES256-GCM96
以编程方式对其进行解密在这个阶段,如果我想使用Java Cryptography Extension 实现上面提到的内容,我发现自己被阻止了,因为官方doc 提供了以下信息:
- 加密算法:AES
- 密钥大小:256 位
- 模式:GCM
- GCM 随机数/IV : 96
- GCM 标签:官方文档中没有提到
我现在有两个问题:在这种情况下我应该使用什么 GCM 标签(无法从源代码中弄清楚)?数字字符串“1604993569”是第四个键的原始格式还是以某种格式编码?
【问题讨论】:
-
我是对的 - 您的问题是关于如何从您的保管库导出密钥(“我正在尝试备份我的保管库密钥”)?
-
@MichaelFehr 完全正确
标签: encryption cryptography hashicorp-vault aes-gcm