使用 AWS KMS 公有密钥加密,无需使用 AWS 开发工具包或 CLI 工具

问题描述

我通过 KMS CMK SDK 生成一个公私对,并检索了公钥。我正在寻找一种使用此公钥加密数据的方法,而无需使用 KMS SDK 或与亚马逊相关的任何内容。然后我会再次使用 KMS API 进行解密。

问题在于客户不希望与任何 AWS 相关软件集成。

一个重要的点是,我确实想在本地存储我的私钥,也不想访问它们。我正在使用 aws CMK keyId 来执行加密和解密。

用于生成对的算法是:RSAES_OAEP_SHA_256 关键规范是:RSA_4096

我正在使用 Java,我正在寻找带有 Java 安全包的解决方案。

非常感谢任何帮助,如果需要更多详细信息,我会修改我的问题。

解决方法

我设法在普通 Java 中使用 RSAES_OAEP_SHA_256 算法进行加密,并使用 KMS SDK 进行解密。我的解决方案如下:

public static byte[] encrypt(String plainText,String publicKey) throws GeneralSecurityException {

    AlgorithmParameters parameters = AlgorithmParameters.getInstance("OAEP",new BouncyCastleProvider());
    AlgorithmParameterSpec specification = new OAEPParameterSpec("SHA-256","MGF1",MGF1ParameterSpec.SHA256,PSource.PSpecified.DEFAULT);
    parameters.init(specification);
    Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding",new BouncyCastleProvider());
    cipher.init(Cipher.ENCRYPT_MODE,getPublicKey(publicKey),parameters);
    return cipher.doFinal(plainText.getBytes());
}