Подтвердить что ты не робот

Как я могу зашифровать строку в JavaScript и расшифровать эту строку в С#

Я видел этот вопрос раньше, хотя в этих случаях плакат хотел зашифровать что-то (обычно URL) на общедоступном веб-сайте, и ответы были в основном "не надо!". В моем случае, однако, JavaScript будет храниться в непубличной внутренней системе, поэтому я думаю, что у меня больше возможностей. Один из примеров аналогичного вопроса: Как зашифровать URL-адрес в javascript и расшифровать в С# - и ответы на самом деле не отвечают на вопрос.

Мой "JavaScript" на самом деле "SuiteScript", который определяется как "SuiteScript - это API на основе JavaScript, который дает разработчикам возможность расширять NetSuite", где NetSuite является размещенным CRM-пакетом, поэтому любое кодирование, используемое для шифрования моего строка будет скрыта для всех, кроме сотрудников моей компании (так считается безопасно скрытой).

Что я хочу сделать:

  • сгенерировать запрос (например, userid = guidValue & firstName = stringValue & company = stringValue &...),
  • зашифровать, используя безопасный метод (такой как AES256, RSA, что бы кто-нибудь не мог предложить это безопасно),
  • вызов веб-страницы на моем веб-сайте на С#, передающем эту строку в URL-адрес (например, mysite.com/mypage.aspx?encStr=encryptedString)
  • чтобы страница С# расшифровывала его, разделяла пары имя/значение и обрабатывала их.

Я googled вокруг и поиск stackoverflow, но не нашел никаких статей или ответов, которые обеспечивают четкие инструкции метода шифрования, который может использоваться обеими технологиями. Кто-нибудь имеет такие инструкции?

4b9b3361

Ответ 1

Симметричный

Самый простой способ - использовать библиотеку в качестве Стэнфордской Javascript Crypto Library, которая реализует стандарт (AES в этом случае) и использовать такой же шифр в С# (через AesManaged или AesCryptoServiceProvider).

Вы получите симметричный шифр, но не более одного параметра (ключа), чтобы установить, как обе библиотеки будут работать.

Асимметричный

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

Существует реализация RSA в javascript и RSACryptoServiceProvider обеспечивают поддержку в .Net

A полный пример доступен в проекте Code, включая путь к RSA в javascript lib для поддержки дополнения (обязательно при использовании реализации .Net )

Примечание

Оба из этих решений сами по себе уязвимы для повтора (атакующий перехватывает строку и отправляет ее позже - потенциально несколько раз - на сервер)