
Tive alguns problemas em um projeto próprio com a criptografia RSA, pois o texto criptografado em um APP Android não estava sendo corretamente descriptografado no webservice, mesmo com as chaves pública e privada estando corretas. A exception (BadPaddingException) informava sobre um problema de “padding”. O que descobri e minhas leituras sobre o tema é que aparentemente a inicialização no Cipher feita pela JVM de um sistema desktop/web é diferente da JVM do Android (Dalvik/ART). O padding inserido em um sistema durante a inicialização não estava sendo equivalente ao outro.
A solução que encontrei foi mudar o provider do Cipher no aplicativo Android para “RSA/ECB/PKCS1Padding”, que é um provider específico para a encriptação e mantive o do Webservice para decriptação com o tradicional provider “RSA”.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Cipher.getInstance("RSA/ECB/PKCS1Padding") |