第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何使用帶有 Java 或 AWSKmsClient 的 AWS 加密 SDK 解密

如何使用帶有 Java 或 AWSKmsClient 的 AWS 加密 SDK 解密

慕容3067478 2022-10-20 15:04:52
我想使用 AWSKmsClient 或 AWS Encryption SDK 和 Java 來解密我使用加密的消息AWS CLI我使用以下方法創(chuàng)建了一條加密消息:aws kms encrypt --key-id 123421-4032-412c-4321-eds42d1a1b432 --plaintext MyText --output text --query CiphertextBlob它為我生成了類似這樣的內(nèi)容: ADCCAHhJotXoy8910T/Pd8PXVaF/Xkg+9NrF9QTy/XlW7rTtUAH6zACj9MbEY1cS7526GfscAAAAZjBkBgkqhkiG9w0BBwagVzBVAgEAMFAGCSqGSIb3DQEHATAeBglghkgBZDEEAS4wEQQMGmYHb67SV66h/eE0AgEQgCONMNda4kVsSi9sPAXXts2F0N/mwjSlIB2ngJcAyxymnltrHQ==我想將此傳遞給我的 scala-spark 代碼并使用 AWSKmsClient 或使用 Java 的 AWS 加密 SDK 對其進(jìn)行解密?;诖随溄樱珹WS Encryption SDK 和 AWS KMS 之間似乎存在一些差異:適用于 Java 的 AWS 加密開發(fā)工具包并不意味著與 aws kms 命令行工具兼容。簡而言之,AWS 加密 SDK 利用 KMS 提供比單獨(dú)使用 KMS 更通用的加密功能我也無法用 AWSKmsClient 做到這一點(diǎn),我錯(cuò)過了什么嗎?有沒有更好的方法來實(shí)現(xiàn)這一目標(biāo)?
查看完整描述

3 回答

?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

這里的混淆歸結(jié)為直接通過 AWS 開發(fā)工具包使用 AWS KMS 和使用 AWS 加密開發(fā)工具包之間的區(qū)別。


AWS 加密 SDK 使用 KMS(或其他密鑰提供程序)作為信封加密格式的一部分 [1]。因此,您引用的代碼段是正確的:AWS Encryption SDK 的輸出不能被 KMS 直接解密,反之亦然。


但是,所有 AWS 加密 SDK 實(shí)施都相互兼容。


如果您想從 CLI 加密一些可以傳遞給 Java/JVM 代碼進(jìn)行解密的內(nèi)容,那么使用 AWS Encryption SDK CLI 和適用于 Java 的 AWS Encryption SDK 絕對可以實(shí)現(xiàn)。


資料來源:我編寫了適用于 Python[2] 和 CLI[3] 的 AWS 加密 SDK,并就適用于 C[4] 的 AWS 加密 SDK 以及我們的文檔 [5] 提供了建議。


至于為什么您無法使用AWSKmsClientAWS CLI 直接調(diào)用 KMS 來解密您收到的值,根據(jù)您收到的錯(cuò)誤有多種可能性。


一種可能性是您可能沒有DecryptCMK 的權(quán)限。這應(yīng)該會導(dǎo)致來自 KMS 的權(quán)限錯(cuò)誤。


另一種可能性是您提供的密文無效。AWS CLI 在返回之前自動對從 KMS 接收的二進(jìn)制數(shù)據(jù)進(jìn)行 base64 編碼CiphertextBlob,因?yàn)榇蠖鄶?shù) shell 不能很好地處理二進(jìn)制數(shù)據(jù)。但是,AWSKmsClient在將任何內(nèi)容發(fā)送到 KMS 之前,它不會自動對其進(jìn)行 base64 解碼。您必須提供原始字節(jié)。因此,如果您AWSKmsClient在解密請求中提供 base64 編碼的字符串,那么 KMS 將拋出您提供了無效密文的錯(cuò)誤。


[1] https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/message-format.html


[2] https://aws-encryption-sdk-python.readthedocs.io/en/latest/


[3] https://aws-encryption-sdk-cli.readthedocs.io/en/latest/


[4] https://github.com/awslabs/aws-encryption-sdk-c


[5] https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html


查看完整回答
反對 回復(fù) 2022-10-20
?
慕的地6264312

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊

我已經(jīng)設(shè)法使用 AWSKMSClient


import java.nio.charset.StandardCharsets


import com.amazonaws.services.kms.{AWSKMS, AWSKMSClientBuilder}

import com.amazonaws.services.kms.model.DecryptRequest

import java.nio.ByteBuffer

import com.google.common.io.BaseEncoding


object KMSUtils {


  val keyId = "arn:aws:kms:us-east-1:{Account ID}:key/{KEY ID}"


  def decrypt(base64EncodedValue: String): String = {

    val kmsClient: AWSKMS = AWSKMSClientBuilder.standard.build


    val textDecoded: ByteBuffer = ByteBuffer.wrap(BaseEncoding.base64().decode(base64EncodedValue))


    val req : DecryptRequest = new DecryptRequest().withCiphertextBlob(textDecoded)

    val plainText : ByteBuffer = kmsClient.decrypt(req).getPlaintext


    val printable = StandardCharsets.UTF_8.decode(plainText).toString


    return printable

  }


}


查看完整回答
反對 回復(fù) 2022-10-20
?
守候你守候我

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊

“AWS Encryption SDK 的所有特定語言的實(shí)施,包括 AWS Encryption CLI,都是可互操作的?!?nbsp;引用自aws 文檔。因此,您的問題正文中缺少的鏈接必須包含虛假信息。

文檔中有基本示例。使用您的密鑰 ID初始化 KmsMasterKeyProvider應(yīng)該會為您完成。

您為什么不將加密部分包裝在使用 AWS 加密 SDK 的 java 程序中,這樣您就不必?fù)?dān)心“互操作性”?



查看完整回答
反對 回復(fù) 2022-10-20
  • 3 回答
  • 0 關(guān)注
  • 382 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號