private const int TAGLEN = 24;
private const Position POSITION = Position.Split;
public static void Main()
Console.WriteLine($"Position >>> {POSITION}");
var requestBody = POSITION switch
Position.Front => "aaaaaaaaaaaabbbbbbbbbbbbxhjkjfgdhsgdhjklyukkutyjfhghjl;uiyuktfjghvx",
Position.Split => "aaaaaaaaaaaaxhjkjfgdhsgdhjklyukkutyjfhghjl;uiyuktfjghvxbbbbbbbbbbbb",
Position.Back => "xhjkjfgdhsgdhjklyukkutyjfhghjl;uiyuktfjghvxaaaaaaaaaaaabbbbbbbbbbbb"
Console.WriteLine($"RequestBody >>> {requestBody}");
var x = GetRequestDataTag(requestBody);
Console.WriteLine($"Tag >>> {x.Item1}");
Console.WriteLine($"Data >>> {x.Item2}");
var responseBody = GetResponseDataTag(x.Item1, x.Item2);
Console.WriteLine($"ResponseBody >>> {responseBody}");
public static (string tag, string data) GetRequestDataTag(string requestBody)
tag: requestBody[..TAGLEN],
data: requestBody[TAGLEN..]
tag: requestBody[..(TAGLEN/2)] + requestBody[^(TAGLEN/2)..],
data: requestBody[(TAGLEN/2)..^(TAGLEN/2)]
tag: requestBody[^TAGLEN..],
data: requestBody[..^TAGLEN]
_ => throw new ArgumentException("Unknown position.")
public static string GetResponseDataTag(string tag, string data)
Position.Front => $"{tag}{data}",
Position.Split => $"{tag[..(TAGLEN / 2)]}{data}{tag[^(TAGLEN / 2)..]}",
Position.Back => $"{data}{tag}",
_ => throw new ArgumentException("Unknown position.")