Вкратце:
данные шифруются с использованием симметричного алгоритма и случайного симметричного ключа. Затем случайный ключ шифруется с использованием открытого асимметричного ключа. Зашифрованный случайный ключ хранится вместе с зашифрованными данными. Для расшифровки данных используется личный асимметричный ключ для расшифровки сохраненного случайного ключа, затем для расшифровки данных используется расшифрованный случайный ключ.
256-битная длина ключа. Тем не менее, он имеет разное значение для симметричных и асимметричных ключей. Для симметричных ключей 256 битов являются очень сильным ключом (вы можете иметь еще более длинные ключи с AES 384 или AES 512, где числа указывают длину ключа, с которым работает алгоритм). Для асимметричных алгоритмов 256 бит - ничто, а сопоставимая сила - 2048 бит.
Шифрование с открытым ключом может быть реализовано с использованием любого языка, который поддерживает математические операции и массивы. Однако делать это заново изобретать колеса. Существует несколько кроссплатформенных библиотек для PKI: open-source OpenSSL для C ++, BouncyCastle для Java и некоторые другие. Наша компания предлагает поддерживаемый и поддерживаемый SecureBlackbox продукт для .NET, Windows и Linux (версия для MacOS X скоро появится).
Также есть пара книг о PKI , которые мы рекомендуем всем нашим пользователям. Руководство RSA легко читается (но очень полезно), а вторая книга углубляется в детали.