创建 CryptoJS AES 密码加密器以在 .NET 中解密

Create CryptoJS AES Cipher Encryptor to Decrypt in .NET

我正在尝试创建可以在 server/client 之间工作的 Encryption/Decryption。我的客户端有 CryptoJS,服务器端有 ASP.Net (VB.Net)。服务器端在许多地方使用,因此无法更改,因此 CryptoJS 需要解决 .NET 正在做的事情。我无法让我的 CryptoJS 100% 模仿 .NET。

仅供参考,.NET 代码无法更改,JS 必须匹配 .NET 功能。

Code removed upon request

我在尝试解密客户端加密时在 .NET 中遇到的错误:

Padding is invalid and cannot be removed.

额外信息

如果我只是通过一个 Hex 作为密钥(删除 .toString(CryptoJS.enc.Latin1)),我没有得到足够的字符(似乎更改为 128 位而不是 256 位)。

JS MD5_Key返回的实际数据似乎匹配.NET中的Validate_MD5...

我是在努力实现不可能的目标吗?

CryptoJS 仅支持 AES,它基本上是 Rijndael,但限于 128 位的块大小。它支持 128、192 和 256 位的密钥大小。您的 .net 代码使用块大小为 256 的 Rijndael,这是 CryptoJS 不支持的。 CryptoJS 愉快地接受了大 IV,并且只使用了前 16 个字节。

您将不得不找到另一个支持此功能的库,因为您无法更改 .net 代码。