/// <summary> /// Decrypts the specified packet buffer. /// </summary> /// <param name="packetBuffer">The packet buffer the way it was received.</param> /// <returns>The decrypted packet data.</returns> public byte[] DecryptPacket(byte[] packetBuffer) { byte[] iv = Sequence.ReadBlock(packetBuffer, 8, 8); byte[] encryptedData = Sequence.ReadBlock(packetBuffer, 16, packetBuffer.Length - 10 - 16); byte[] decryptedData = DesEncryption.DecryptData(encryptedData, iv, Key); int paddingLength = (decryptedData.Last() + 2); return(Sequence.ReadBlock(decryptedData, 0, decryptedData.Length - paddingLength)); }
/// <summary> /// Encrypts the given packet payload data. /// </summary> /// <param name="payload">The payload data to be encrypted.</param> /// <param name="iv">The initialization vector (IV).</param> /// <returns>The encrypted payload data.</returns> public byte[] EncryptPacket(byte[] payload, byte[] iv) { byte[] paddedData = PadData(payload); return(DesEncryption.EncryptData(paddedData, iv, Key)); }