Quantcast
Channel: Security Vulnerability
Viewing all articles
Browse latest Browse all 317

C# Aes Crypto implementation to Javascript

$
0
0

I have a Rijndael based c# code. I try to encrypt in c# Rijndael and decrpt in javascript(CryptoJS). But i cant match the encrypted values. I try lots of things but nothing worked.

Here is my c# code:

 public string GenerateKey () {
        string EncodeAes (string key, string input) {
            var aes = GetCryptoParams (key);
            var plainBytes = Encoding.UTF8.GetBytes (input);
            //Key will be Base64 String -- oo
            return Convert.ToBase64String (AesEncrypt (plainBytes, aes));
        }
        RijndaelManaged GetCryptoParams (string key) {
            // random key bytes 16bit
            var keyBytes = new byte[16];
            var secretKeyBytes = Encoding.UTF8.GetBytes (key);
            Array.Copy (secretKeyBytes, keyBytes, Math.Min (keyBytes.Length, secretKeyBytes.Length));
            var aes = new RijndaelManaged {
                Mode = CipherMode.CBC,
                Padding = PaddingMode.PKCS7,
                KeySize = 128,
                BlockSize = 128,
                Key = keyBytes,
                IV = keyBytes
            };

            return aes;
        }
        byte[] AesEncrypt (byte[] plainBytes, RijndaelManaged rijndaelManaged) {
            return rijndaelManaged.CreateEncryptor ()
                .TransformFinalBlock (plainBytes, 0, plainBytes.Length);
        }
        return EncodeAes ("qwertasdfgzxcvbn", RandomPassword.Generate (16));
    }

    // POST api/values
    [HttpPost]
    public HttpResponseMessage GetEncDecText ([FromBody] encRequest req) {
        string EncodeAes (string key, string input) {
            var aes = GetCryptoParams (key);
            var plainBytes = Encoding.UTF8.GetBytes (input);
            return Convert.ToBase64String (AesEncrypt (plainBytes, aes));
        }
        string DecodeAes (string key, string thisDecode) {
            var aes = GetCryptoParams (key);
            try {
                var encryptedBytes = Convert.FromBase64String (thisDecode);
                return Encoding.UTF8.GetString (AesDecrypt (encryptedBytes, aes));
            } catch {
                return null;

            }

        }
        RijndaelManaged GetCryptoParams (string key) {
            var keyBytes = new byte[16];
            var secretKeyBytes = Encoding.UTF8.GetBytes (key);
            Array.Copy (secretKeyBytes, keyBytes, Math.Min (keyBytes.Length, secretKeyBytes.Length));
            var aes = new RijndaelManaged {
                Mode = CipherMode.CBC,
                Padding = PaddingMode.PKCS7,
                KeySize = 128,
                BlockSize = 128,
                Key = keyBytes,
                IV = keyBytes
            };

            return aes;
        }
        byte[] AesEncrypt (byte[] plainBytes, RijndaelManaged rijndaelManaged) {
            return rijndaelManaged.CreateEncryptor ()
                .TransformFinalBlock (plainBytes, 0, plainBytes.Length);
        }
        byte[] AesDecrypt (byte[] encryptedData, RijndaelManaged rijndaelManaged) {
            return rijndaelManaged.CreateDecryptor ()
                .TransformFinalBlock (encryptedData, 0, encryptedData.Length);
        }

    }

And here is my javascript code:

var serverEncText = "P+KvsN/m3qOc8egIkqyi4w==";
var secretKey = "7YIOB9NooY225lP6CRSqKQ0KiluAF/6cYn3kFXvJkS0=";

var decryptData2 = function(encryptedData) {
  var Key = CryptoJS.enc.Base64.parse(secretKey);
  var IV = CryptoJS.enc.Utf8.parse(new Buffer.from("0123456789ABCDEF"));
  var decryptedText = CryptoJS.AES.decrypt(encryptedData, Key, {
      keySize: 128 / 8,
      BlockSize: 128,
      iv: IV,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
  });

  return decryptedText.toString(CryptoJS.enc.Utf8)
}

var result = decryptData2(encryptedData);
console.log(result, "result");

backend works awesome: "secretKey" is my generated c# key and "serverEncText" is my c# encoded text. When when i try this in javascript it's always returns empty string.

How to resolve it ?


Viewing all articles
Browse latest Browse all 317

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>