#java #encryption #libsodium
#java #шифрование #libsodium
Вопрос:
Я не специалист по безопасности или криптографии. Я хочу выполнить шифрование при взаимодействии моего клиента с сервером в системе RESTful api.
В настоящее время я использую javax crypto
и инициализирую Ciper
for AES
с AES/GCM/PKCS5Padding
помощью для шифрования данных и RSA
с RSA/ECB/OAEPWithSHA-256AndMGF1Padding
помощью для шифрования iV
и Symmetric key
с помощью открытого ключа. Это хорошо работает для меня.
Я еще немного покопался в других библиотеках шифрования и нашел Libsodium
or NaCl.
Я попытался найти какое-либо сравнение между ними, и я не могу его найти. Это потому, что я пытаюсь сравнить яблоки с апельсинами?
Должен ли я продолжать javax crypto
или я должен переключиться на sodium
? Какие преимущества sodium
дает значение по умолчанию javax crypto
?
Комментарии:
1. Поддерживает ли NaCl Java? С этой страницы кажется, что только C и C : — nacl.cr.yp.to/features.html
2. В maven есть libsodium и jnacl
3. libsodium пытается предоставить криптоинтерфейсы, которые являются достаточно высокоуровневыми и с которыми сложно выстрелить себе в ногу. Java crypto более низкого уровня и до краев заполнен ножными пушками.
4. @PresidentJamesK. Полк, ты можешь подробнее рассказать об этом? Например, если мы рассматриваем алгоритмы шифрования как блоки lego, все, что нам нужно сделать, это собрать воедино блоки, чтобы создать поток с java crypto (например, сгенерировать iv, сгенерировать спецификацию gcm, сгенерировать ключи и т. Д.). Но с libsodium нам все равно нужно предоставить одноразовый номер и ключи.
5. Использование «внешних» библиотек может быть полезно при «кроссплатформенной криптографии» (например, между Java и C / C ), поскольку у вас одинаковая основа для ваших методов и данных. Если вы остаетесь в Java, JCE является хорошей отправной точкой.