Могу ли я сделать зашифрованный текст меньшим при использовании Crypto ++ для реализации шифрования и расшифровки ECC?

Недавно я использовал Bouncy Castle и Crypto ++ для расшифровки ECC & шифрование

После всех моих усилий, наконец, я реализую основную функцию: генерировать пару ключей, расшифровывать и шифровать текст. Они являются инструментами как в C ++ (с использованием Crypto ++), так и в Java (с использованием Bouncy Castle), но я обнаружил, что эти 2 проекта были довольно разными.

Итак, вот мои два связанных вопроса:

  1. В JAVA мне нужно создать 2 пары ключей, я не знаю, почему я должен создать 2 пары ключей? Вот другой пользователь задает тот же вопрос другой такой же вопрос по stackoverflow.Какой смысл использовать 2 пары ключей?

  2. Я шифрую & Расшифруйте строку (10 байт) с помощью JAVA и C ++, конечно, следуйте примеру кода. В Java я генерирую 2 пары ключей на кривой prime256k1. В C ++ я генерирую пару ключей на кривой secp256k1. Длина ключей составляет 256 бит. Когда я получил зашифрованный текст, я обнаружил, что длина зашифрованного текста Java составляет около 30 байтов, но длина зашифрованного текста на C ++ составляет около 100 байтов. Что делает их такими разными? Может потому что 2 пары ключей? Если так, то почему?

0

Решение

  1. Какой смысл использовать 2 пары ключей?

Это потому, что вы не можете напрямую шифровать с помощью криптографии EC, как вы можете с помощью RSA (после безопасного заполнения). Вместо этого используется ECDH, что в основном является ключевым соглашением. Сначала вы импортируете открытый ключ другой стороны, а затем создаете собственную пару ключей, используя те же параметры. Затем вы выполняете согласование ключей, получая начальное значение секретного ключа. Тогда ты просто выбросить временно необходимый закрытый ключ. Это может быть выполнено либо косвенным образом или же эксплицитно в зависимости от реализации.

Теперь, если вы отправите другой стороне свой открытый ключ, тогда другая сторона также может выполнить соглашение о ключе и получить начальное значение секретного ключа. Этот начальный ключ используется в качестве (основы) для секретного ключа, который используется для фактического шифрования данных. Эта схема называется EC-IES.

  1. Может потому что 2 пары ключей? Если так, то почему?

Как указано выше, необходимо использовать временно используемый открытый ключ отправителя. Этот ключ обычно занимает один или два раза больше размера закрытого ключа ECC. Если вы получите только зашифрованный текст длиной 30 байтов с размером ключа 256 бит / 32 байта, то открытый ключ, вероятно, не будет включен в зашифрованный текст.

Конечно, используя другой режим шифрования или же включение IV или нет может также иметь значение. Нам понадобится используемый протокол, реализация и спецификация библиотеки, чтобы быть уверенным в этом.

Таким образом, нет, вы не можете сделать зашифрованный текст (намного) меньше, так как вам необходимо кодировать открытый ключ. Вы можете использовать неявную / именованную кривую и сжатие точек + возможно режим CTR с нулевым IV, чтобы сделать зашифрованный текст меньше.

0

Другие решения

Других решений пока нет …