Вам нужно будет сериализовать зашифрованный текст самостоятельно. Есть много способов сделать это.
Если ключ является не строкой, а WordArray
(как в вашем случае), то простой encryptedlogin.toString()
создаст строку в кодировке Base64, содержащую только зашифрованный текст. Помните, что вам нужно включить исходный файл enc-base64.js.
Если «ключ» (на самом деле пароль) является строкой, то применяется производное ключа, совместимое с OpenSSL. В этом случае encryptedlogin.toString()
будет строкой в кодировке Base64, которая содержит строку «Salted__», 8-байтовую случайную соль и зашифрованный текст.
Если вы хотите получить только зашифрованный текст, то encryptedlogin.ciphertext.toString()
даст вам строку в шестнадцатеричном кодировании, которая содержит только зашифрованный текст, а encryptedlogin.iv.toString()
даст вам шестнадцатеричный IV. Таким образом вы можете создать строку в кодировке Base64 encryptedlogin.ciphertext.toString(CryptoJS.enc.Base64)
.
Помните, что IV должен выбираться случайным образом для каждого шифрования, чтобы обеспечить семантическую безопасность. Он не обязательно должен быть секретным, поэтому вы можете отправить его вместе с зашифрованным текстом.
На стороне сервера вы должны декодировать значения (Base64 или Hex в зависимости от того, что вы использовали во время шифрования) и использовать их с классом AesCryptoServiceProvider (или аналогичным) для расшифровки зашифрованного текста.
Помните, что вам дополнительно необходимо аутентифицировать зашифрованный текст, чтобы обнаружить (злонамеренные) манипуляции. Это можно сделать с помощью схемы «зашифровать-затем-MAC» с надежным MAC-адресом, например HMAC-SHA256.
Кроме того, если ключ передается вместе с зашифрованным текстом или по незащищенному каналу, то это в основном просто запутывание данных и не обеспечивает реальной безопасности. Подробнее: Криптография JavaScript считается вредной
person
Artjom B.
schedule
07.04.2016