Простое шифрование строк in.NET и Javascript



Я разрабатываю ASP.NET приложение MVC, в котором я хочу зашифровать короткую строку на сервере, используя C#, и отправить ее на клиентскую сторону.



Затем на стороне клиента он будет расшифрован с помощью кода Javascript.



Есть мысли, как это реализовать?



Знаете ли вы простой алгоритм шифрования (не обязательно пуленепробиваемый), который можно легко перевести с C# на Javascript или наоборот?



Примечание: Я мог бы сделать это полностью в C# и сделайте расшифровку через Ajax, но я бы предпочел не делать этого таким образом, так как я хочу максимально уменьшить трафик сайта.

685   5  

5 ответов:

Система .Безопасность.Криптография имеет набор готовых к использованию симметричных (и асимметричных) алгоритмов шифрования. (Для чего-то сверхсекретного используйте aes)

Вы должны быть в состоянии найти соответствующую реализацию Javascript для большинства (вот несколько реализаций aes в JS)

Примечание: Если вы планируете использовать тогда имейте в виду, что ваша веб-страница будет иметь ключ, встроенный в нее, и это означает, что все это становится своего рода бессмысленным, потому что любой, имеющий доступ к странице, может сделать дешифровку, в лучшем случае вы бы немного усложнили жизнь скребков экрана. Если ваша цель-усложнить жизнь скребков экрана, вы можете просто использовать алгоритм обсфукации. Любая тривиальная реализация сделала бы очень непрактичным для скребков экрана, которые не имеют javascript двигатель:

Напр.

function samObsfucated()
{
    return("s" + "a" + "m" + "@" + "s" + "." + "com");
}

Затем onload заполняет поля электронной почты выводом этих функций.

Javascript шифрование имеет действительно хороший вариант использования для программного обеспечения, которое хранит пароли для пользователей ala clipperz

Это звучит так, как будто вы хотите запутать или кодировать, а не шифровать. кодировка Base64 должна хорошо работать здесь. Результат будет выглядеть совсем не так, как адрес электронной почты, и процесс кодирования будет быстрым.

В C# можно использовать:

string emailAddress = "[email protected]";
string encoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(emailAddress));

И вы можете использовать эту функцию JavaScript для ее декодирования:

function Base64Decode(encoded) {
   var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      enc1 = keyStr.indexOf(encoded.charAt(i++));
      enc2 = keyStr.indexOf(encoded.charAt(i++));
      enc3 = keyStr.indexOf(encoded.charAt(i++));
      enc4 = keyStr.indexOf(encoded.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < encoded.length);

   return output;
}

Приложение C# кодирует строку [email protected] в YWJjQGV4YW1wbGUuY29t, а версия JavaScript декодирует YWJjQGV4YW1wbGUuY29t обратно в [email protected].

Как насчет простого XOR-шифра ?

Эти две реализации полностью совместимы:

С точки зрения простейшей вещи, которая может работать, кажется, что вы хотите простую форму запутывания, а не что-то действительно безопасное.

Rot-13 может быть достаточно, если вы имеете дело с аудиторией с адресами электронной почты ASCII. Если вам нужна поддержка Unicode, то вам может понадобиться что-то немного более сложное.

Можно ли использовать HTTPS для шифрования всего трафика между клиентом и сервером? Это, вероятно, самый безопасный метод, который вы найдете.

Comments

    Ничего не найдено.