Crypto JS Размер ключа шифрования AES в JavaScript? - PullRequest
0 голосов
/ 09 июля 2020

Доброго времени суток, ребята. У меня возникла проблема при разработке шифрования AES с использованием Crypto JS в javascript. Давайте сначала посмотрим мой исходный код.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="jquery-3.5.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/core.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/enc-base64.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/md5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/evpkdf.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/cipher-core.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/aes.min.js"></script>
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/pad-nopadding.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/lib-typedarrays.min.js"></script>-->
<script type="text/javascript">
    $(document).ready(function() {
        var encrypted = "TEST";
        var key = CryptoJS.enc.Hex.parse("bf161fba8b12433f176bc9088e14bd49499ee34fcb4694082345639957e778852bdc904206c4ecd2d3e2f4bc");
        var iv  = CryptoJS.enc.Hex.parse("18a69482e9d401052c4307dcb8124409");
        var decrypted = CryptoJS.AES.encrypt(encrypted, key, { iv: iv });
        var dec         = CryptoJS.AES.decrypt(decrypted, key, { iv: iv });

        var _cipher     = decrypted.toString();
        var _plain      = dec.toString();
    });
</script>

Здесь вы можете увидеть, что мой размер ключа составляет 44 байта, что составляет 352 бита. Но Crypto JS отлично шифрует и дешифрует IV длиной 16 байт. Я совершенно не понимаю, как это случилось. Насколько я понимаю, стандарт AES использует размер ключа 128, 192 и 256 бит. https://en.wikipedia.org/wiki/Advanced_Encryption_Standard

Моя проблема в том, что мне нужно написать несколько кодов на C#, чтобы зашифровать те же данные с тем же ключом и iv. Но C# не позволяет использовать длину ключа 44 байта для AES. Я использую RijndaelManaged.

Кто-нибудь может объяснить, как это происходит в Crypto JS? Чтобы я мог написать свои коды C#. Заранее спасибо.

...