Ошибка в (RSA / ECB / OAEPwithSHA-512 и MGF-1Padding) шифровании и дешифровании. Ошибка 1 га sh при попытке расшифровки - PullRequest
0 голосов
/ 12 февраля 2020

Я получаю ошибку 1 га sh несоответствия в бэкэнде при попытке расшифровать зашифрованный текст в android интерфейсе.

Frontend Android Kotlin код для шифрования:

fun encrypt(message: String): String {

    val key = "generated public key"

    val encryptedBytes: ByteArray
    val pubKey: PublicKey? = key.toPublicKey()
    val cipher: Cipher = Cipher.getInstance("RSA/ECB/OAEPWITHSHA512ANDMGF1PADDING")

    cipher.init(Cipher.ENCRYPT_MODE, pubKey)
    encryptedBytes = cipher.doFinal(message.toByteArray())

    return Base64.encodeToString(encryptedBytes, Base64.DEFAULT)

}

fun String.toPublicKey(): PublicKey {
    val CRYPTO_METHOD = "RSA"

    val keyBytes: ByteArray = Base64.decode(this, Base64.DEFAULT)
    val spec = X509EncodedKeySpec(keyBytes)
    val keyFactory = KeyFactory.getInstance(CRYPTO_METHOD)

    return keyFactory.generatePublic(spec)
}

Backend java код для расшифровки:

public static String rsaDecrypt(String algorithm, byte[] encryptedMessage, Key privateKey) throws Exception {
        Cipher c = Cipher.getInstance(RSA/ECB/OAEPWITHSHA512ANDMGF1PADDING) ;

        c.init(Cipher.DECRYPT_MODE, privateKey);
        byte[] plainText = c.doFinal(encryptedMessage);

        return new String(plainText);

    }

public static PrivateKey getPrivateKeyFromString(String key) throws Exception {
        BASE64Decoder b64 = new BASE64Decoder();

        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PKCS8EncodedKeySpec publicKeySpec = new PKCS8EncodedKeySpec(b64.decodeBuffer(key));
        PrivateKey publicKey = keyFactory.generatePrivate(publicKeySpec);

        return publicKey;
    }
...