Как преобразовать файл p12 в строку base64?

Я использую java apns для отправки уведомлений на устройства ios на моем сервере, Java apns нужны сертификаты.p12 и пароль для отправки уведомлений.

ApnsService service =
APNS.newService()
.withCert("/path/to/certificate.p12", "MyCertPassword")
.withSandboxDestination()
.build();

Я хочу сохранить этот тип.p12 в моей базе данных, так как в моей системе более 1 файла.p12. Наш сервер также позволяет сторонним компаниям отправлять свои приложения на наш сервер. Они должны отправить свои файлы.p12 на наш сервер, так как они хотят отправить уведомление через наш сервер. Мы не хотим хранить их файлы.p12 в папке на нашем сервере, а в базе данных со строкой base64.

У меня есть некоторые вопросы здесь: Как мы можем преобразовать.p12 в строку base64? Как мы можем восстановить файл.p12 из строки base64 при отправке уведомления?
Есть ли лучшие решения для получения и хранения файлов.p2 на моей стороне сервера?

Заранее спасибо.

1 ответ

private static String encodeFileToBase64Binary(String fileName)
        throws IOException {

    File file = new File(fileName);
    byte[] bytes = loadFile(file);
    byte[] encoded = Base64.encodeBase64(bytes);
    String encodedString = new String(encoded);

    return encodedString;
}
private static byte[] loadFile(File file) throws IOException {
    InputStream is = new FileInputStream(file);

    long length = file.length();
    if (length > Integer.MAX_VALUE) {
        // File is too large
    }
    byte[] bytes = new byte[(int)length];

    int offset = 0;
    int numRead = 0;
    while (offset < bytes.length
           && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
        offset += numRead;
    }

    if (offset < bytes.length) {
        throw new IOException("Could not completely read file "+file.getName());
    }

    is.close();
    return bytes;
}
Другие вопросы по тегам