Member 14805662 Ответов: 1

Шифрование и дешифрование Cryptojs в UWP C#


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

Я пытался использовать дешифрование AES, но все равно получал ошибки. Ниже приведен массив, который генерируется при шифровании URL-адреса на сервере

Кодовая фраза: e615242cd9498f2a38995d516bb5f8c819be91a4

Passphrase: e615242cd9498f2a38995d516bb5f8c819be91a4

Encrypted String: {"ct":"yA8RGCPPvX4f9QhIJ0ga2oOutxnUEcddh5iBQalPoAlNZgutVTefOdvwO54D7Bwl2eTr+i/u9/cDL6sVcvZ9+hXfr1eZ/sYjjKX0qSr+yPjA+CrQWeApBPVtS45JPCY8ekB2pZah8uqqtPpfeV5T8xHzrkJJbS0d+VqFhj1aqao/qWKdCaD6BK75QfnkBz0XzQd/ulK7saoLGO2t7LHhlg==","iv":"0fa9a8205ccb9894e416e8ba85bc4960","s":"60f24ca1a8380cac"}


Что я уже пробовал:

Below is the code that requires an key and Iv and what to decrpyt but i dont know how to get the key.


class AesEnDecryption
    {
        // Key with 256 and IV with 16 length
        private string AES_Key = "";
        private string AES_IV = "";
        private IBuffer m_iv = null;
        private CryptographicKey m_key;

        public AesEnDecryption()
        {


            IBuffer key = Convert.FromBase64String(AES_Key).AsBuffer();
            m_iv = Convert.FromBase64String(AES_IV).AsBuffer();
            SymmetricKeyAlgorithmProvider provider = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7);
            m_key = provider.CreateSymmetricKey(key);
        }

        public byte[] Encrypt(byte[] input)
        {

            IBuffer bufferMsg = CryptographicBuffer.ConvertStringToBinary(Encoding.ASCII.GetString(input), BinaryStringEncoding.Utf8);
            IBuffer bufferEncrypt = CryptographicEngine.Encrypt(m_key, bufferMsg, m_iv);
            return bufferEncrypt.ToArray();
        }

        public string Decrypt(byte[] input)
        {
            IBuffer bufferDecrypt = CryptographicEngine.Decrypt(m_key, input.AsBuffer(), m_iv);
           
            string one = Encoding.Unicode.GetString(bufferDecrypt.ToArray());
            return one;
        }

    }

Richard MacCutchan

Шифратор преобразует строку в ASCII, но дешифратор получает ее как Unicode. Нет никакой необходимости в любом из этих преобразований. Просто зашифруйте исходную строку как есть, и она должна работать.

Member 14805662

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

Richard MacCutchan

Посмотри на свой код. Вы преобразуете строку в ASCII, а затем в двоичный код и шифруете результат. Вам не нужны эти преобразования, просто зашифруйте фактические исходные данные.

1 Ответов

Рейтинг:
1

#realJSOP

Вы смотрели на эту ссылку?

Google Groups - Crypto JS[^]

Если это не поможет, я погуглил "расшифровать cryptojs с помощью c#" и получил следующие результаты:

DuckDuckGo — уединение, упрощенное.[^]