public static long AES_Encrypt(string inName, string pubKey) { var key = Crypto.RSA.ParsePEM <AsymmetricKeyParameter>(pubKey); var outName = inName + "_enc"; var fin = new FileStream(inName, FileMode.Open, FileAccess.Read); var fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write); fout.SetLength(0); Console.WriteLine("Encrypting to " + outName); Console.WriteLine("Any such file will be overwritten!"); // Set Parameters var aesParams = new AESParameters() { AlgorithmId = Algorithm.Rijndael256, CipherMode = CipherMode.CBC, PaddingMode = PaddingMode.PKCS7, BlockSize = AESParameters.DEFAULT_BLOCKSIZE_BITCOUNT, IVLength = AESParameters.DEFAULT_BLOCKSIZE_BITCOUNT, KeyLength = AESParameters.DEFAULT_KEY_BITCOUNT, IV = RndBytes(AESParameters.DEFAULT_BLOCKSIZE_BITCOUNT / 8), Key = RndBytes(AESParameters.DEFAULT_KEY_BITCOUNT / 8), }; // Write Header var header = new Header.Header(aesParams, key); fout.Write(header.ToArray(), 0, Header.Header.HEADER_SIZE); // Encrypt the rest var total = AES.ProcessInput(true, fin, fout, aesParams); return(total + Header.Header.HEADER_SIZE); }
public HttpResponseMessage AESAlgorithumEncrypt([FromBody] AESParameters param) { string encrypted = Encrypt(param.PlainText, param.Key); //string decrypted = Decrypt(encrypted, param.Key); AESManaged obj = new AESManaged() { Encrypted = encrypted // Decrypted = decrypted }; try { var json = new JavaScriptSerializer().Serialize(obj); var resp = new HttpResponseMessage() { Content = new StringContent(json) }; resp.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); return(resp); } catch (Exception ex) { throw; } }
public AESCipher(AESParameters _parameters) { parameters = _parameters; }
public AESCipher(byte[] key, KeySize size = KeySize.bit128) { parameters = new AESParameters(key, size); }
public void ValidHeaderConversionTest(AESParameters aesParams) { var h1 = new Header(aesParams, privateKey.Public); var a1 = h1.ToAESParameters(privateKey.Private); var buff = h1.ToArray(); var h2 = new Header(buff); var a2 = h2.ToAESParameters(privateKey.Private); // Simple tests Assert.That(h1.AlgorithmId == h2.AlgorithmId); Assert.That(h1.PaddingMode == h2.PaddingMode); Assert.That(h1.CipherMode == h2.CipherMode); Assert.That(h1.BlockSize.Length == h2.BlockSize.Length); Assert.That(h1.KeyLength.Length == h2.KeyLength.Length); Assert.That(h1.IVLength.Length == h2.IVLength.Length); Assert.That(h1.IV.Length == h2.IV.Length); Assert.That(h1.Key.Length == h2.Key.Length); // iterative tests for (var i = 0; i < Header.BYTESTREAM_BYTE_OFFSTET; i++) { Assert.That(h1.IVLength[i] == h2.IVLength[i]); Assert.That(h1.KeyLength[i] == h2.KeyLength[i]); Assert.That(h1.BlockSize[i] == h2.BlockSize[i]); } for (var i = 0; i < h1.Key.Length; i++) { Assert.That(h1.Key[i] == h2.Key[i]); } for (var i = 0; i < h1.IV.Length; i++) { Assert.That(h1.IV[i] == h2.IV[i]); } // AESParams -> Header -> AESParams test Assert.That(aesParams.AlgorithmId == a1.AlgorithmId); Assert.That(aesParams.AlgorithmId == a2.AlgorithmId); Assert.That(aesParams.PaddingMode == a1.PaddingMode); Assert.That(aesParams.PaddingMode == a2.PaddingMode); Assert.That(aesParams.CipherMode == a1.CipherMode); Assert.That(aesParams.CipherMode == a2.CipherMode); Assert.That(aesParams.BlockSize == a2.BlockSize); Assert.That(aesParams.BlockSize == a1.BlockSize); Assert.That(aesParams.IVLength == a1.IVLength); Assert.That(aesParams.IVLength == a2.IVLength); Assert.That(aesParams.KeyLength == a1.KeyLength); Assert.That(aesParams.KeyLength == a2.KeyLength); Assert.That(aesParams.IV.Length == a2.IV.Length); Assert.That(aesParams.IV.Length == a1.IV.Length); Assert.That(aesParams.Key.Length == a1.Key.Length); Assert.That(aesParams.Key.Length == a2.Key.Length); for (var i = 0; i < aesParams.IV.Length; i++) { Assert.That(aesParams.IV[i] == a1.IV[i]); Assert.That(aesParams.IV[i] == a2.IV[i]); } for (var i = 0; i < aesParams.Key.Length; i++) { Assert.That(aesParams.Key[i] == a1.Key[i]); Assert.That(aesParams.Key[i] == a2.Key[i]); } }