/// <summary>復号化</summary> /// <param name="input">AeadResult</param> /// <returns>平文(plaintext)</returns> public override byte[] Decrypt(AeadResult input) { // AesGcm実装を初期化 this.InitAesGcm(false); // aead = ciphert + tag byte[] aead = null; if (input.Aead == null) { aead = input.CombineByteArrayForDecrypt(); } else { aead = input.Aead; } // GCM操作の実行 byte[] plaint = new byte[this._aesGcm.GetOutputSize(aead.Length)]; int len = this._aesGcm.ProcessBytes(aead, 0, aead.Length, plaint, 0); len += this._aesGcm.DoFinal(plaint, len); // 平文を返す。 return(plaint); }