Arhn - архитектура программирования

Невозможно выполнить шифрование и дешифрование с помощью RSA-OAEP в java

Я могу сгенерировать пару ключей и шифрование и дешифрование с помощью 4 символов строки для приведенного ниже оператора.

 byte[] input = "userid".getBytes();

Но когда я увеличиваю длину строки, как показано ниже, я получаю исключение

byte[] input = "userid:789".getBytes();

Код:

import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
import java.security.Security;

import javax.crypto.Cipher;

public class RSAOAEP {
  public static void main(String[] args) throws Exception {
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

    byte[] input = "userid:789".getBytes();
    Cipher cipher = Cipher.getInstance("RSA/None/OAEPWithSHA1AndMGF1Padding", "BC");
    SecureRandom random = new SecureRandom();
    KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "BC");

    generator.initialize(386, random);

    KeyPair pair = generator.generateKeyPair();
    Key pubKey = pair.getPublic();

    Key privKey = pair.getPrivate();

    System.out.println("privateKey: "+privKey);
    System.out.println("publicKey: "+pubKey);

    cipher.init(Cipher.ENCRYPT_MODE, pubKey, random);
    byte[] cipherText = cipher.doFinal(input);
    System.out.println("cipher: " + new String(cipherText));

    cipher.init(Cipher.DECRYPT_MODE, privKey);
    byte[] plainText = cipher.doFinal(cipherText);
    System.out.println("plain : " + new String(plainText));
  }
}

Исключение:

Исключение в потоке «основной» java.lang.ArrayIndexOutOfBoundsException: слишком много данных для блока RSA в org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi.engineDoFinal(неизвестный источник) в javax.crypto.Cipher.doFinal(Cipher.java :2165) на RSAOAEP.main(RSAOAEP.java:29)


  • Возможный дубликат ArrayIndexOutOfBoundsException: слишком много данных для блока RSA 02.02.2018
  • 386 бит намного слишком мало для RSA; это даже ниже 512, который был выбран для «экспортных» пакетов SSL 25 лет назад, потому что тогда он уже был взломан. Для OAEP, использующего SHA1, он допускает только 50 бит = 6 байтов открытого текста, как вы обнаружили, чего недостаточно даже для симметричного ключа для гибридного шифрования (как предлагает Ники), который является обычным и обычно лучше. Посмотрите десятки вопросов на crypto.SX и security.SX о том, какие размеры ключей необходимы для обеспечения безопасности, или просто перейдите на keylength.com 02.02.2018
  • Я увеличил размер ключа, теперь у меня не возникает проблем. Спасибо, Джеймс и Дэйв. 06.02.2018

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..