Crypto JS решает интерпретировать ваш «ключ» как пароль, если вы передадите ему строку. Затем он получает ключ от этого пароля, который сильно отличается от этого пароля.
Для ключа, когда вы передаете строку, он обрабатывается как фраза-пароль и используется для получения фактического ключа и IV. Или вы можете передать WordArray, который представляет фактический ключ. Если вы передаете фактический ключ, вы также должны передать фактический IV.
Именно поэтому ваш зашифрованный текст такой большой : он содержит 8-байтовую соль и зашифрованный текст. Соль в сочетании с паролем для получения ключа. Перед солью стоит строка / magi c Salted__
, попробуйте просмотреть зашифрованный текст в шестнадцатеричном редакторе, и вы обнаружите, что 8 первых байтов не так уж случайны.
AES Ключ должен состоять из полностью непредсказуемых бит / байтов. Это означает, что печатаемая строка не может быть ключом, потому что она оставляет непечатные символы по определению. Если вы хотите использовать определенный c тестовый ключ, определите его с помощью шестнадцатеричных символов и используйте Hex.parse
из библиотеки Crypto JS.
ECB небезопасен, вам следует использовать аутентифицированный режим, такой как GCM.