下面的行演示如何在Tink中生成密钥:
keysetHandle=KeysetHandle.generateNew(AeadKeyTemplates.AES128_GCM)privateKeysetHandle = KeysetHandle.generateNew(SignatureKeyTemplates.ECDSA_P256)您能告诉我如何构造给定的参数,例如键字节和相关参数吗?
还可以通过从JSON加载参数来创建密钥:
String keysetFilename = "my_keyset.json";
KeysetHandle keysetHandle = CleartextKeysetHandle.read(
JsonKeysetReader.withFile(new File(keysetFilename)));JSON中的键格式是如何定义的?
发布于 2019-06-13 19:01:39
Maarten Bodewes:您介意告诉我们API有什么问题吗,以及您认为应该如何修改它?我们都在倾听反馈。
我们不想让用户直接处理密钥,因为这很容易搞砸。这就是为什么我们提供生成、持久化和加载密钥的API。1展示了如何做到这一点。
看起来,您有一个现有的密钥,以某种其他格式,您想要使用它与丁克。丁克的钥匙储存在原型机里。每个键类型都在自己的protobuf中定义。您可以在https://github.com/google/tink/tree/master/proto找到所有定义。Tink不使用单独的键,而是使用同样是protobuf的键集。通过提供KeysetReader的实现,您可以将现有的键转换为Tink的密钥集。SignaturePemKeysetReader 2是一个将某些PEM键转换为Tink的示例。
如果你遇到更多的问题,可以通过tink-user@googlegroups.com对邮件列表进行评论或发电子邮件。
希望这能帮上忙泰国人。
编辑:更新第二个链接。
发布于 2020-11-17 20:20:24
我也遇到过类似的问题,但是HMAC在单元测试中。希望能帮上忙。
示例JSON:
{
"primaryKeyId": 2061245617,
"key": [{
"keyData": {
"typeUrl": "type.googleapis.com/google.crypto.tink.HmacKey",
"keyMaterialType": "SYMMETRIC",
"value": "EgQIAxAgGiB9qbGjo1sA41kHHKbELAKmFzj3cNev0GJ3PpvhR00vuw=="
},
"outputPrefixType": "TINK",
"keyId": 2061245617,
"status": "ENABLED"
}]
}用于生成它的代码(Scala):
import com.google.crypto.tink.mac.MacConfig
MacConfig.register()
def generate(): Unit = {
import java.io.ByteArrayOutputStream
import java.nio.charset.StandardCharsets
import com.google.crypto.tink.mac.HmacKeyManager
import com.google.crypto.tink.{CleartextKeysetHandle, JsonKeysetWriter, KeysetHandle}
val generatedKeyset = KeysetHandle.generateNew(HmacKeyManager.hmacSha256Template())
val output = new ByteArrayOutputStream
CleartextKeysetHandle.write(generatedKeyset, JsonKeysetWriter.withOutputStream(output))
println(output.toString(StandardCharsets.UTF_8))
}
generate()加载JSON和用法:
import com.google.crypto.tink.{CleartextKeysetHandle, JsonKeysetReader}
val hmacKeyset = CleartextKeysetHandle.read(
JsonKeysetReader.withString(...)
)
val mac = hmacKeyset.getPrimitive(classOf[Mac])
mac.computeMac(...)要记住,这是完全不安全的,不应该在外部测试中使用。
执行工作的相关部分:
编辑:生成密钥集JSON的更简单的方法:
$ tinkey create-keyset --key-template HMAC_SHA256_256BITTAG
{
"primaryKeyId": 1132518908,
"key": [{
"keyData": {
"typeUrl": "type.googleapis.com/google.crypto.tink.HmacKey",
"keyMaterialType": "SYMMETRIC",
"value": "EgQIAxAgGiDwIucBpWJ8WHVIEKIdEVQlfynm+4QS8sKUVUga2JzRlw=="
},
"outputPrefixType": "TINK",
"keyId": 1132518908,
"status": "ENABLED"
}]
}https://stackoverflow.com/questions/56192126
复制相似问题