2017-02-06 21 views
-2

Я хочу написать скрипт для создания хэш строки с помощью JavaScript, но эта строка должна использовать некоторую формулу, которая с моей стороны сервера использовать программист это в своем коде,Создать хэш строки в JavaScript на основе C# дешифратор

С # код для декодирования:

private string Decrypt(string cipherText) 
{ 
    string EncryptionKey = "MAKV2SPBNI99212"; 
    byte[] cipherBytes = Convert.FromBase64String(cipherText); 
    using (Aes encryptor = Aes.Create()) 
    { 
     Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 }); 
     encryptor.Key = pdb.GetBytes(32); 
     encryptor.IV = pdb.GetBytes(16); 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write)) 
      { 
       cs.Write(cipherBytes, 0, cipherBytes.Length); 
       cs.Close(); 
      } 
      cipherText = Encoding.Unicode.GetString(ms.ToArray()); 
     } 
    } 
    return cipherText; 
} 

У меня нет никакой идеи работать с зашифрованными/дешифрованными строками в JavaScript. Как написать скрипт для шифрования строк в javascript?

UPDATE: Я нашел CryptoJS и использовать этот код:

var ID = 12345; 
var ciphertext = Crypto.AES.encrypt(ID, 'MAKV2SPBNI99212'); 

Но хэш строки не может принять на C# Decrypt метод.

+1

Возможный дубликат [шифрования и дешифрования строки JavaScript?] (Http://stackoverflow.com/questions/18279141/javascript-string-encryption-and-decryption) – lleaff

+0

Используйте Ajax для отправки строки с JavaScript на ваш сервер C# backend и вернуть зашифрованную строку. –

+0

@lleaff Спасибо, я нашел этот вопрос раньше, но это решение не работает для меня :( – MajAfy

ответ

0

Поскольку у вас есть «encryptionKey» в вашем исходном коде, вы не хотите, чтобы этот ключ в вашем JavaScript-коде. JavaScript является Clientside и поэтому небезопасным (для этой цели) по определению.

Вместо этого создайте api-call: просто вызовите функцию Server-Side-Function и верните ответ в виде строки или JSon-Object.

Итак, все, что вам нужно сделать, это вызвать эту функцию извне. Вы не указали какую-либо информацию, используете ли вы asp.net или mvc, поэтому я не могу предложить какой-либо пример кода, но вы должны найти более чем достаточно ресурсов для этого в MSDN.

+0

Спасибо за ваш ответ, я хочу использовать этот код в гибридном приложении, и я буду запутывать мои коды, теперь я не знаю, что такое значение «EncryptionKey» точно Я нашел 'CryptoJS' и использовал этот код' var ciphertext = Crypto.AES.encrypt (ID, 'MAKV2SPBNI99212'); 'но хэш-строка не принимается C# decryptor! – MajAfy

+3

Обфускация не работает для безопасности. Там есть инструменты без обфускации. Серьезно: не делайте этого –

+0

@MajAfy С уважением, использование неправильной терминологии и фундаментально неверная вера в «безопасность» обфускации показывает, что вы действительно недостаточно знаете о криптографии, чтобы реализовать это самостоятельно. Если вы хотите, чтобы то, над чем вы работаете **, действительно было безопасным **, для вас и ваших пользователей вы действительно должны нанять профессионального консультанта по безопасности или разработчика. И ваш код C#, и ваши запланированные изменения полны дыр в безопасности. –

 Смежные вопросы

  • Нет связанных вопросов^_^