Encryption algorithms should use secure modes and padding schemes where appropriate to guarantee data confidentiality and integrity.
AesManaged object with insecure mode:
Dim aes4 = New AesManaged With {
.KeySize = 128,
.BlockSize = 128,
.Mode = CipherMode.ECB, ' Noncompliant
.Padding = PaddingMode.PKCS7
}
RSACryptoServiceProvider object without OAEP padding:
Dim RSA1 = New RSACryptoServiceProvider() Dim encryptedData = RSA1.Encrypt(dataToEncrypt, False) ' Noncompliant: OAEP Padding is not used (second parameter set to false)
AES with GCM mode with bouncycastle library:
Dim blockCipher As GcmBlockCipher = New GcmBlockCipher(New AesFastEngine()) ' Compliant blockCipher.Init(True, New AeadParameters(New KeyParameter(secretKey), 128, iv, Nothing))
AES with GCM mode with AesGcm object:
Dim aesGcm = New AesGcm(key) ' Compliant
RSA with OAEP padding with RSACryptoServiceProvider object:
Dim RSA2 = New RSACryptoServiceProvider() Dim encryptedData = RSA2.Encrypt(dataToEncrypt, True) ' Compliant: OAEP Padding is used (second parameter set to true)