У меня C#. NET кодировка шифрования, подобная этой:
public static string Encrypt(string plainText, string KEY, string SALT)
{
byte[] secretKey = null;
using (Rfc2898DeriveBytes rfc2898 = new Rfc2898DeriveBytes(KEY, Encoding.UTF8.GetBytes(SALT), 65536, HashAlgorithmName.SHA256))
{
secretKey = rfc2898.GetBytes(32);
}
using (RijndaelManaged AES = new RijndaelManaged())
{
AES.Key = secretKey;
AES.IV = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
AES.Mode = CipherMode.CBC;
AES.Padding = PaddingMode.PKCS7;
byte[] encryptedData;
using (ICryptoTransform encryptor = AES.CreateEncryptor())
{
using (System.IO.MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter streamWriter = new StreamWriter(cryptoStream))
{
streamWriter.Write(plainText);
}
encryptedData = memoryStream.ToArray();
}
}
}
return Convert.ToBase64String(encryptedData);
}
}
Q C хочет изменить мой код из этого:
byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
На это:
byte[] iv = new byte[16];
SecureRandom secRandom = new SecureRandom();
secRandom.nextBytes(iv);
Проблема в том, что предлагаемый код написан в Java, есть идеи переписать его в C#. NET, пожалуйста?
Для справки я видел тот же вопрос: SecureRandom в C#
Но я все еще не понимаю.
Спасибо.