【发布时间】:2020-10-29 20:12:54
【问题描述】:
我正在开发运行在 ec2 服务上的 rest api 系统。
我的要求是
- 使用 AES256 对纯文本进行加密/解密
- 使用 pbkdf2 生成密钥
- 将密钥存储在 aws 云系统上
- Java
我尝试使用 KMS 和 Crypto sdk,但它不起作用。 (ex) 当我用相同的明文调用方法时,每次加密值的结果都会改变。
你有什么想法吗?
public String encrypt(String text) {
String plaintext = text;
try {
ByteBuffer byteBuffer = getByteBuffer(plaintext);
EncryptRequest encryptRequest = new EncryptRequest().withKeyId(key_arn).withPlaintext(byteBuffer);
EncryptResult encryptResult = client.encrypt(encryptRequest);
String ciphertext = getString(java.util.Base64.getEncoder().encode(encryptResult.getCiphertextBlob()));
plaintext = ciphertext;
} catch (Exception e) {
e.printStackTrace();
}
return plaintext;
}
public String decrypt(String text) {
String bb = null;
try {
byte[] ciphertextBytes = text.getBytes();
DecryptRequest request = new DecryptRequest();
request.setCiphertextBlob(ByteBuffer.wrap(ciphertextBytes));
DecryptResult result = client.decrypt(request);
// Convert to byte array
byte[] plaintext = new byte[result.getPlaintext().remaining()];
ByteBuffer a = result.getPlaintext().get(plaintext);
bb = getString(a);
} catch (Exception e) {
e.printStackTrace();
}
return bb;
}
【问题讨论】:
-
"但它不起作用" - 您能否提供一个示例,说明如何使用 KMS 以使其不起作用?
-
@Marcin 我的代码
标签: amazon-web-services encryption cryptography