Шифрование на C # расшифровка на JavaScript
-
16-09-2019 - |
Вопрос
Я ищу способ зашифровать строку в C # и расшифровать ее с помощью JavaScript.JavaScript в данном случае является языком сценариев для внутренней системы, поэтому мне не следует беспокоиться о том, что люди получат доступ к закрытому ключу / паролю, который потребуется для расшифровки.
При поиске решения в Интернете кажется, что шифрование AES должно сработать.Я изучил Управляемое slowAES и Rijndael решение, но мне не повезло заставить его работать.
Я использовал код C #, который предоставил Cheeso, и получил идентичный зашифрованный текст.Но когда я попытался использовать slowAES для шифрования одной и той же части данных, я получил совершенно другой шифр.
var testString = new Array("w", "a", "t", "s", "o", "n", "?");
var test = slowAES.encrypt(testString, slowAES.modeOfOperation.CBC, "12345678901234567890123456789012", slowAES.aes.keySize.SIZE_256, new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
alert(test.cipher);
Может кто-нибудь указать мне правильное направление?Меня не волнует метод, главное, чтобы я мог добиваться результатов.Моя цель - взять URL, например:
www.test.com/clientid=123
используйте .NET (C #), чтобы зашифровать его, чтобы он выглядел как
www.test.com/clientid=asdf ;lkjsxd;flkjq934857u9duhfgkjhgalsdkjfh
а затем используйте JavaScript, чтобы преобразовать его обратно в
www.test.com/clientid=123
Спасибо, Итрушн
Решение 3
Мне удалось решить мою проблему, используя шифрование RC4.Вы можете получить более подробную информацию о реализации на моем Блог.
Другие советы
Операции шифрования / дешифрования выполняются с двоичными данными.Следовательно, вы должны сохранить эти двоичные данные между C # и javascript.Кодирование выходных данных в виде base64 или шестнадцатеричной строки, вероятно, лучший способ сделать это.
Вариант 1
Если вашей единственной целью является защита конфиденциальных данных между сервером и клиентом, что является решаемой проблемой, используйте SSL.
Вариант 2
учитывая URL-адрес www.test.com/clientid=123
используйте .NET (C #), чтобы зашифровать его и указать на другое местоположение:www.mywebserver.com/forward.aspx?url=asdf ;lkjsxd;flkjq934857u9duhfgkjhgalsdkjfh
а затем на странице forward.aspx расшифруйте и перенаправьте на www.test.com/clientid=123
затем клиент выполняет HTTP-перенаправление и выполняет prest-o-done.Никаких общих ключей, прост в реализации, это просто работает.
Примечание:
Что касается вашего оригинального решения, то оно не может быть выполнено безопасно без COM или каких-либо других средств взаимодействия.Причина, по которой я говорю это, заключается в том, что JScript потребуется доступ к паре открытый / закрытый ключи, что, насколько мне известно, невозможно.Без открытого / закрытого ключа серверу потребовалось бы совместно использовать симметричный ключ с клиентом.Не имея средств для безопасной передачи этого ключа, вы не защитили данные, а только запутали их.
Я думаю, что самым простым подходом было бы использовать SSL, за которым следует URL-адрес пересылки.