所以我正在阅读Open ID Connect中描述的JWT令牌格式,其中一个字段(at_hash)表示它是从oauth访问令牌生成的最左边128位散列。所以我所做的就是获取令牌,哈希,然后尝试将“最左边”的128位拉出来,但我觉得我这样做是错的;感觉很糟糕。
所以我想我的问题是:
有更好,更准确的方法吗?
private byte[] GetFirst128(byte[] hash)
{
var bitArray = new BitArray(hash);
var left128 = new List<bool>();
for (var i = 0; i < 128; i++)
{
left128.Add(bitArray[i]);
}
// convert back to byte[]
var r = Array.ConvertAll(left128.ToArray(),
bit => bit
? (byte) 1
: (byte) 0);
return r;
}
答案 0 :(得分:4)
128位是16个字节,所以你可以这样做:
hash.Take(16).ToArray();