C'est un mémorandum
La sécurité n'est pas très forte, veuillez donc vous référer également à cette méthode.
$ aws kms generate-data-key --key-spec "AES_128" --key-id "arn:aws:kms:REGION_NAME:ACCOUNT_ID:key/HOGEHOGE"
{
"ciphertextBlob": "foo",
"Plaintext" : "bar",
"KeyId" : "KEY-ID"
}
Le ciphertextBlog et le Plaintext renvoyés sont encodés en Base64
$ KEY=$(echo "bar" | base64 -d | od -A n -t x1 -v | sed -e 's/ //g')
$ openssl aes-128-ecb -e -in secret.txt -out encrypted.txt -base64 -K ${KEY}
KEY = KMS DataKey converti en chaîne HEX (requête: manière plus intelligente) Chiffrez avec la commande openssl. À ce stade, le vecteur d'initialisation n'est pas nécessaire pour le traitement de bloc.
String encryptedTxt = "baz";
String plainDataKey = "bar";
byte[] key = DatatypeConverter.parseBase64Binary(plainDataKey);
SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] encrypted = DatatypeConverter.parseBase64Binary(encryptedTxt);
String decryptedTxt = new String(cipher.doFinal(encrypted));
System.out.println("result: " + decryptedTxt);
Dans l'exemple ci-dessus, plainDataKey est écrit solidement, Pour être correct, plainDataKey doit être obtenu en décodant le ciphertextBlog en se référant à la documentation AWS. En outre, il existe une instruction dans la documentation AWS pour supprimer la plainDataKey utilisée dès que possible.
Si vous voulez bien faire les choses, vous devez générer la clé et le vecteur d'initialisation. Pensez-y comme amusant = sécurité réduite.
Recommended Posts