【发布时间】:2020-07-27 13:14:45
【问题描述】:
我们有一个使用 Rijndael 加密和解密的 C# 库
_algorithm = new RijndaelManaged() { Mode = CipherMode.CBC, Padding = PaddingMode.ISO10126 };
public override byte[] Encrypt(byte[] bytes)
{
// a new iv must be generated every time
_algorithm.GenerateIV();
var iv = _algorithm.IV;
var memoryStream = new MemoryStream();
using (var encryptor = _algorithm.CreateEncryptor(_key, iv))
using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
{
memoryStream.Write(iv, 0, iv.Length);
cryptoStream.Write(bytes, 0, bytes.Length);
cryptoStream.FlushFinalBlock();
return memoryStream.ToArray();
}
}
C#中有对应的decrypt方法,可以对上面代码加密的内容进行解密。现在需要节点应用程序使用完全相同的算法发送加密数据。 但是,我相信由于 iv,C# 代码无法解密它 任何想法
CryptoJS.AES.encrypt(
value,
key,
{
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Iso10126,
}
);
const decryptedString= CryptoJS.enc.Base64.stringify(result.ciphertext);
【问题讨论】:
-
确保将密钥指定为
Buffer实例,并实际提供IV?你似乎认为如果没有实际尝试,事情就不会奏效。 -
那么为什么正在加密的新应用程序不能使用它的解密器呢?困惑。
-
node api 加密并上传到 azure blob。 C# 代码获取并解密它。
-
@MaartenBodewes 我不认为你理解这个问题。 C# 库从 Rijndael 生成IV。生成IV()。我对 javascript 的 IV 的问题,如何在 javascript 中生成与 C# 类似的问题。当然,我已经对其进行了多次测试。没用
标签: c# encryption cryptojs rijndael rijndaelmanaged