/// <summary> /// Encrypts plainText value with IV and returns encrypted string /// </summary> public string Encrypt(string plainText, string iv) { try { if (!singleKeyManager) { throw new InvalidOperationException("This instance of EncryptionManager was expecting parameter of ticks"); } if (AESManager == null) { AESManager = new AesManaged(); } var encryptor = AESManager.CreateEncryptor(AESManager.Key, Convert.FromBase64String(iv)); byte[] encrypted; //byte[] data = Encoding.UTF8.GetBytes(plainText); using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { using (StreamWriter sw = new StreamWriter(cs)) { sw.Write(plainText); } encrypted = ms.ToArray(); } } return(Convert.ToBase64String(encrypted)); } catch (Exception ex) { Debug.WriteLine(ex); throw ex; } }
/// <summary> /// Encrypts plainBytes value with IV and ticks and returns encrypted bytes /// </summary> public byte[] Encrypt(byte[] plainBytes, byte[] iv, long ticks) { try { if (singleKeyManager) { throw new InvalidOperationException("This instance of EncryptionManager was not expecting parameter of ticks. Use constructor with a, b and c instead."); } if (AESManager == null) { AESManager = new AesManaged(); } Random random; if (ticks % 2 == 0) { random = new Random(BaseEvenIntKey + (int)(ticks % 1000000000)); } else { random = new Random(BaseOddIntKey + (int)(ticks % 1000000000)); } byte[] bytes = new byte[32]; random.NextBytes(bytes); AESManager.Key = bytes; var encryptor = AESManager.CreateEncryptor(AESManager.Key, iv); byte[] encrypted; using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { using (StreamWriter sw = new StreamWriter(cs)) { sw.Write(plainBytes); } encrypted = ms.ToArray(); } } return(encrypted); } catch (Exception ex) { Debug.WriteLine(ex); throw ex; } }