0
私はBouncy Castleを使用してCMSで暗号化されたデータを持っており、その内容を解読したいと思います。しかし、私はjavax.crypto.BadPaddingException: pad block corrupted
を取得する問題に遭遇しています。私は秘密鍵に何か問題があると信じています。Bouncy CastleでCMSEncryptedDataの解読がBadPaddingExceptionをスローする:パッドブロックが壊れた
val provider = new BouncyCastleProvider()
// output encoder
val gen = new CMSEncryptedDataGenerator()
val encoder = new JceCMSContentEncryptorBuilder(CMSAlgorithm.DES_EDE3_CBC).setProvider(BouncyCastleProvider.PROVIDER_NAME).build()
// secrete key
val spec = new DESedeKeySpec(encoder.getKey.getRepresentation.asInstanceOf[Array[Byte]])
val keyFactory = SecretKeyFactory.getInstance("DESEDE", provider)
val secretKey = keyFactory.generateSecret(spec)
// Encryption
val cmsEncryptedData: CMSEncryptedData = gen.generate(new CMSProcessableByteArray("Hello World!".getBytes()), encoder)
// Decryption
val decryptedContententBinary: Array[Byte] = {
cmsEncryptedData.getContent(new InputDecryptorProvider {
override def get(algorithm: AlgorithmIdentifier): InputDecryptor = new InputDecryptor {
override def getAlgorithmIdentifier: AlgorithmIdentifier = algorithm
override def getInputStream(encIn: InputStream): InputStream = {
val parameters = new JceAlgorithmIdentifierConverter().setProvider(provider).getAlgorithmParameters(algorithm)
val cipher = Cipher.getInstance(parameters.getAlgorithm, provider)
cipher.init(Cipher.DECRYPT_MODE, secretKey, parameters) // throws javax.crypto.BadPaddingException: pad block corrupted
new CipherInputStream(encIn, cipher)
}
}
})
}
これはScalaですよね?スカラーでない場合は、言語タグを含めるように質問を編集してください。 –