using System.Security.Cryptography;
public static void Main()
var identifierBytes = Convert.FromBase64String("rplx5ydcRpGFWHBIcneo+g==");
var opaqueHex = Convert.FromHexString("53547E14B435DDCBE06ED2BF986F4F5B");
var bundleIdHex = Convert.FromHexString("0C0F63682E6371642E5469636BC57473");
var payloadLength = opaqueHex.Length + bundleIdHex.Length + identifierBytes.Length;
byte[] payload = new byte[payloadLength];
Buffer.BlockCopy(identifierBytes, 0, payload, destOffset, identifierBytes.Length);
destOffset += identifierBytes.Length;
Buffer.BlockCopy(opaqueHex, 0, payload, destOffset, opaqueHex.Length);
destOffset += opaqueHex.Length;
Buffer.BlockCopy(bundleIdHex, 0, payload, destOffset, bundleIdHex.Length);
using (var sha1 = new SHA1Managed())
var hash = sha1.ComputeHash(payload);
Console.WriteLine(Convert.ToHexString(hash));