Avoid predictable IV

Metadata

ID: csharp-security/predictable-iv

Language: C#

Severity: Warning

Category: Security

Description

In security, initialization vectors must change and not be static. Avoid fixed initialization vectors and always use dynamic values.

Learn More

Non-Compliant Code Examples

using System.IO;
using System.Security.Cryptography;

class MyClass {
    public void Encrypt(byte[] key, byte[] dataToEncrypt, MemoryStream target)
    {
        var acsp = new AesCryptoServiceProvider();

        byte[] iv     = new byte[] {};
        var encryptor = acsp.CreateEncryptor(key, iv);
    }
}

Compliant Code Examples

using System.IO;
using System.Security.Cryptography;

class MyClass {
    public void Encrypt(byte[] key, byte[] dataToEncrypt, MemoryStream target)
    {
        var acsp = new AesCryptoServiceProvider();
        var encryptor = acsp.CreateEncryptor(key, acsp.IV);
    }
}