C# 处理Azure AD B2C自定义策略用于散列数据

C# 处理Azure AD B2C自定义策略用于散列数据,c#,azure-ad-b2c,azure-ad-b2c-custom-policy,C#,Azure Ad B2c,Azure Ad B2c Custom Policy,我正在尝试使用此过程散列自定义策略中的数据: 我需要以c#中相同的方式散列数据,将其作为声明发送到策略,然后使用自定义策略散列相同的数据,然后在自定义策略中比较散列匹配的数据。但是,当我使用以下代码snipet使用c#散列数据,然后尝试在策略中散列数据时,散列不匹配。我在寻找我可以在C#中使用的自定义策略用于散列数据的方法 var saltedClaim = string.Concat(text, salt); byte[] saltedClaimAsBytes = E

我正在尝试使用此过程散列自定义策略中的数据:

我需要以c#中相同的方式散列数据,将其作为声明发送到策略,然后使用自定义策略散列相同的数据,然后在自定义策略中比较散列匹配的数据。但是,当我使用以下代码snipet使用c#散列数据,然后尝试在策略中散列数据时,散列不匹配。我在寻找我可以在C#中使用的自定义策略用于散列数据的方法

       var saltedClaim = string.Concat(text, salt);
     byte[] saltedClaimAsBytes = Encoding.UTF8.GetBytes(saltedClaim);
     byte[] keyAsBytes = Encoding.UTF8.GetBytes(key);
     using (HMACSHA256 hmac = new HMACSHA256(keyAsBytes))
     {
                 // Compute the hash 
         byte[] hashValue = hmac.ComputeHash(saltedClaimAsBytes);
        return Convert.ToBase64String(hashValue);
     }

谢谢@Heather,请使用SHA256而不是HMACSHA256,它将解决您的问题

参考:-


SHA256与HMACSHA256的算法不同。

填充模式错误(请参阅:)。说明:键可以是任意长度。但是,建议的大小为64字节。如果密钥长度超过64字节,将对其进行散列(使用SHA-256)以派生64字节密钥。如果长度小于64字节,则将填充到64字节。Hi@jdweng,密钥长度为16个字符。我认为,要得到相同的哈希值需要很长的时间,策略中的哈希计算(包括密钥大小)必须与c#中的相同。它使用相同的密钥和相同的盐。虽然在政策中,它的散列方式肯定有所不同,而这正是我希望发现的