Алгоритм шифрования rsa с открытым ключом в формате xml - PullRequest
0 голосов
/ 03 октября 2018

Для подключения к веб-сервису нужна строка encryptst, зашифрованная открытым ключом в формате xml, мне нужна функция для этого шифрования.

public static String enc(Context context,String input) throws InvalidKeyException, InvalidKeySpecException, UnsupportedEncodingException, BadPaddingException, IllegalBlockSizeException, NoSuchPaddingException, NoSuchAlgorithmException {

    String public_key_modulus = "xA7SEU+e0yQH5rm9kbCDN9o3aPIo7HbP7tX6WOocLZAtNfyxSZDU16ksL6
    WjubafOqNEpcwR3RdFsT7bCqnXPBe5ELh5u4VEy19MzxkXRgrMvavzyBpV
    RgBUwUlV5foK5hhmbktQhyNdy/6LpQRhDUDsTvK+g9Ucj47es9AQJ3U=";

    String public_key_exponent= "AQAB";

    byte[] expBytes = Base64.decode(public_key_exponent,Base64.DEFAULT);
    byte[] modBytes = Base64.decode(public_key_modulus,Base64.DEFAULT);

    BigInteger modules = new BigInteger(1, modBytes);
    BigInteger exponent = new BigInteger(1, expBytes);

    KeyFactory factory = KeyFactory.getInstance("RSA");
    Cipher cipher = Cipher.getInstance("RSA");

    RSAPublicKeySpec pubSpec = new RSAPublicKeySpec(modules, exponent);

    PublicKey pubKey = factory.generatePublic(pubSpec);
    Log.i("pubKey",pubKey.toString());
    cipher.init(Cipher.ENCRYPT_MODE, pubKey);
    byte[] encrypted = cipher.doFinal(input.getBytes("UTF-8"));

    return new String(encrypted);}

в функции pubkey показано ниже:

10-03 20:31:31.811 2314-2314/com.zamangasht I/pubKey: OpenSSLRSAPublicKey{modulus=b273acce7f01200e3adf180e16b33126e46f00f1f4e94183c82b9b032be44a40b7dd19b08503be4e56551af25dab7a36ce55e74119ba48657a5fb5d33c0ccd3c01c40982da5a90e642dfe8d9ac55a5a38f53103131e059857c3a7fdc4577f2434a8b0f4c9455bb27a30dd03b1fee1c4fa6621268c8d54db9bf668313f53f7c55,publicExponent=10001}

но на сервере возвращается ошибка, как зашифровать с помощью этого открытого ключа в формате XML

<RSAKeyValue>
<Modulus>
    xA7SEU+e0yQH5rm9kbCDN9o3aPIo7HbP7tX6WOocLZAtNfyxSZDU16ksL6
    WjubafOqNEpcwR3RdFsT7bCqnXPBe5ELh5u4VEy19MzxkXRgrMvavzyBpV
    RgBUwUlV5foK5hhmbktQhyNdy/6LpQRhDUDsTvK+g9Ucj47es9AQJ3U=
</Modulus>
<Exponent>
    AQAB
</Exponent>

...