Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS KMS如何使用Java解密函数_Java_Encryption_Amazon Web Services_Key Management - Fatal编程技术网

AWS KMS如何使用Java解密函数

AWS KMS如何使用Java解密函数,java,encryption,amazon-web-services,key-management,Java,Encryption,Amazon Web Services,Key Management,我的问题可能听起来太明显了,但我对亚马逊KMS还不熟悉。 在阅读了AWS上的大量文档后,我了解到,如果我直接使用CMK进行加密和解密,我可以通过创建加密和解密请求直接完成。 但我不清楚的是,当我生成一个数据密钥并使用它进行调试时,文档中说我需要传递加密的数据密钥来解密API,我将获得纯文本密钥,我可以使用它“自己”调试文本。 我不明白这部分。任何人都可以解释一下,并给出一个使用数据密钥解密的小例子。 提前谢谢 我的示例代码: public String decrypt(String encryp

我的问题可能听起来太明显了,但我对亚马逊KMS还不熟悉。 在阅读了AWS上的大量文档后,我了解到,如果我直接使用CMK进行加密和解密,我可以通过创建加密和解密请求直接完成。 但我不清楚的是,当我生成一个数据密钥并使用它进行调试时,文档中说我需要传递加密的数据密钥来解密API,我将获得纯文本密钥,我可以使用它“自己”调试文本。 我不明白这部分。任何人都可以解释一下,并给出一个使用数据密钥解密的小例子。 提前谢谢

我的示例代码:

public String decrypt(String encryptedTextString) {
    ByteBuffer encryptedText = ByteBuffer.wrap(Base64.getDecoder().decode(encryptedTextString));
    DecryptRequest req=new DecryptRequest().withCiphertextBlob(encryptedText);
    ByteBuffer plainText = client.decrypt(req).getPlaintext();
    return new String(plainText.array());
}

public String encrypt(String plainTextString) {
    ByteBuffer plainText = ByteBuffer.wrap(Base64.getDecoder().decode(plainTextString));
    EncryptRequest req = new EncryptRequest().withKeyId(new String(plainTextKey.array()))
            .withPlaintext(plainText);
    ByteBuffer encryptedText =client.encrypt(req).getCiphertextBlob();
    return new String(encryptedText.array());
}

AWSKMSCryprography() {
    this.setCredential(new ClearCredential());
    this.genrateKey();
}

private void genrateKey() {
    GenerateDataKeyRequest request = new GenerateDataKeyRequest();
    request.setKeyId(keyID);
    request.setKeySpec("AES_128");
    GenerateDataKeyResult dataKeyResult = client.generateDataKey(request);
    plainTextKey = dataKeyResult.getPlaintext();
    encryptedKey = dataKeyResult.getCiphertextBlob();

}

我也不熟悉使用KMS,但是关于使用encrypt和decrypt的教程文档对使用encrypt和decrypt方法有误导性。API文档同时提供了和,并指出
encrypt()
用于特定用例,使用本地密钥时应使用不同的模式


KMS的一个更有用的示例可以在中找到。另请参阅,了解基本加密的概述。

我认为它们只是意味着您可以使用自己为测试目的生成的密钥进行加密/解密。@MaartenBodewes谢谢,那么这是否意味着上面的代码片段足以进行加密和解密,因为现在我不想要存储加密密钥和加密文本的开销???