Используя openssl шифрование с Java

Большое спасибо за первый ответ. Здесь представлена ​​модифицированная версия для преобразования прямоугольного изображения в квадратное (и округленное), а цвет заливки передается как параметр.

public static Bitmap getRoundedBitmap(Bitmap bitmap, int pixels, int color) {

    Bitmap inpBitmap = bitmap;
    int width = 0;
    int height = 0;
    width = inpBitmap.getWidth();
    height = inpBitmap.getHeight();

    if (width <= height) {
        height = width;
    } else {
        width = height;
    }

    Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888);
    Canvas canvas = new Canvas(output);

    final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, width, height);
    final RectF rectF = new RectF(rect);
    final float roundPx = pixels;

    paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(color);
    canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    canvas.drawBitmap(inpBitmap, rect, rect, paint);

    return output;
}
6
задан jerome 19 September 2008 в 08:54
поделиться

3 ответа

Я не эксперт OpenSSL, но я предположил бы, что код C++ использует DES в режиме CBC, таким образом нуждающемся в IV (это - то, что, вероятно, initKey, и вот почему Вы думаете, что Вам нужны два ключа). Если я прав, необходимо изменить код Java для использования DES в режиме CBC также, то код Java также потребует ключа шифрования и IV.

1
ответ дан 17 December 2019 в 20:36
поделиться

Кроме того, имейте в виду, что Вы действительно не должны использовать sun.misc.* классы в Вашем коде. Это могло прервать другой VMs, поскольку это не общедоступные API. Кодеки палаты общин Apache (среди других) имеют реализации Base64, которые не переносят эту проблему.

Я не действительно уверен, почему единственный DES когда-либо использовал бы несколько ключей. Даже если бы Вы использовали тройной DES, я полагаю, что Вы использовали бы единственный ключ (с большим количеством байтов данных) вместо того, чтобы использовать отдельные ключи с Криптографией Java API.

1
ответ дан 17 December 2019 в 20:36
поделиться

Алгоритмы должны соответствовать; если Вы получаете различные результаты, это может иметь отношение к способу, которым Вы обрабатываете ключи и текст. Также имейте в виду, что символы Java 2 байта длиной, какие символы C++ составляют 1 байт, так, чтобы мог иметь некоторое отношение к нему.

0
ответ дан 17 December 2019 в 20:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: