Алгоритм подписи, который работает с Android, Java, iPhone, Windows Mobile - PullRequest
2 голосов
/ 05 июня 2011

Кто-нибудь знает алгоритм подписания, который будет работать со всеми этими платформами.

Сервер сгенерирует открытый и закрытый ключ RSA через программу Java.Затем клиентскому приложению (мобильному телефону) необходимо будет декодировать сообщение с сервера, подписанное с помощью закрытого ключа (открытый ключ хранится на устройстве).

Указанные ниже значения работают с Android и JavaОднако я не уверен, как они будут работать с другими платформами.

    //For the server signed message
public static final int RSA_KEY_SIZE = 2048;
public static final String SIGNATURE_ALGORITHM = "SHA256withRSA";
public static final String RSA = "RSA";
public static final String PROVIDER = "BC"; //Bouncy Castle

    //For hashing sensitive data over the network
public static final String SECURE_RANDOM_ALGORITHM = "SHA1PRNG";

Ответы [ 2 ]

2 голосов
/ 05 июня 2011

Вы неправильно понимаете асимметричную криптографию. Чтобы зашифровать сообщение, сервер должен использовать открытый ключ клиента, а с помощью своего личного ключа клиент сможет расшифровать сообщение. То, что делается с закрытым ключом RSA, называется «подписью». Если вам нужно использовать шифрование только с одним жестко закодированным ключом, вы можете использовать симметричную криптографию (например, AES).

1 голос
/ 05 июня 2011

Одним из пунктов стандартизированных криптографических алгоритмов является то, что они являются функционально совместимыми, независимо от того, какой код использовался для их реализации.Так, например, сообщение, зашифрованное RSA, может быть создано сервером, написанным на Java, и расшифровано клиентом .Net (подумайте о том, как веб-серверы взаимодействуют с браузерами с использованием HTTPS - нет ограничений на то, какие языки вы можете использовать для написания сервера / веб-браузера).

Для Windows Mobile доступна реализация крипто API Bouncy Castle (Compact Framework).Для кода iPhone Objective-C некоторые ссылки можно найти в этом вопросе StackOverflow .

...