Если вы используете PKCS # 1 1.5 или 2.0 RSA-шифрование ( см. Стандарты ), вы также зашифруете случайное заполнение.Это означает, что при передаче PIN-коды нельзя сравнивать, поскольку заполнение держится в секрете и является действительно случайным (это не соль, которую следует обнародовать).
Что касается базы данных, она будетбудет хорошей идеей вывести его из обычных операций как можно больше.Создайте простой сервис, который просто проверяет ПИН-код после расшифровки, убедитесь, что у вас нет переполнений буфера и т. Д., И, если возможно, используйте другой компьютер и права доступа, отличные от рабочего сервера.На самом деле хорошо протестируйте эту часть, так как интерфейс небольшой, это не должно быть сложно.
Если вы и телефоны готовы, вы можете попробовать ECC, но это не для кротких.При шифровании RSA обычно используется небольшая общедоступная экспонента (настоятельно рекомендуется 0x010001), поэтому он быстрее, чем ECC для телефона.На сервере (и при создании ключа) ECC намного быстрее.Я бы не рекомендовал для этого симметричную криптографию (AES / 3DES).
Да, и включал бы открытый ключ шифрования в приложение (для неявного доверия), не отправляйте его с сервера.Храните секретный ключ в секрете и недоступном для чего-либо, кроме уже упомянутой службы.