相关疑难解决方法(0)

良好的AES初始化矢量实践

根据我的问题Aes Encryption ...错过了一个重要的部分,我现在已经了解到我在字符串上创建可逆加密的假设有点过时了.我现在有

    public static byte[] EncryptString(string toEncrypt, byte[] encryptionKey)
    {
        var toEncryptBytes = Encoding.UTF8.GetBytes(toEncrypt);
        using (var provider = new AesCryptoServiceProvider())
        {
            provider.Key = encryptionKey;
            provider.Mode = CipherMode.CBC;
            provider.Padding = PaddingMode.PKCS7;
            using (var encryptor = provider.CreateEncryptor(provider.Key, provider.IV))
            {
                using (var ms = new MemoryStream())
                {
                    using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                    {
                        cs.Write(toEncryptBytes, 0, toEncryptBytes.Length);
                        cs.FlushFinalBlock();
                    }
                    return ms.ToArray();
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这产生了一致的结果; 但是,如果不知道/设置初始化向量,我将无法解密.我真的不想将三个值传递给这个方法(在IV上),这让我硬编码IV或从密钥中导出它.我想知道这是不是一个好的做法,或者它是否会使加密的值容易受到某种程度的攻击......或者我是否真的过度思考这个并且应该硬编码IV?

更新 根据铱星的建议,我尝试了类似的东西:

    public static byte[] EncryptString(string toEncrypt, byte[] encryptionKey)
    {
        if …
Run Code Online (Sandbox Code Playgroud)

c# aescryptoserviceprovider initialization-vector

50
推荐指数
5
解决办法
6万
查看次数

有没有办法在没有 iv 的情况下在 openssl 中运行 aes-128-cbc 加密?

我正在尝试openssl使用aes-128-cbc加密来加密文本文件,我想知道是否有一种方法可以仅使用密钥而不是 iv 对其进行加密?

每次我尝试运行时:

openssl enc -aes-128-cbc -e -in dummy_file.txt -out dummy.aes-128-cbc.bin -K 00112233445566778889aabbccddeeff
Run Code Online (Sandbox Code Playgroud)

我收到错误消息iv undefined,它生成的加密文件为空,甚至不是二进制文件。

encryption cryptography initialization-vector cbc-mode

0
推荐指数
1
解决办法
4086
查看次数