检测是否通过 .NET C# 强制执行 FIPS

Detecting if FIPS is being enforced via .NET C#

有没有办法从 .NET 框架确定 windows 计算机上是否正在执行 FIPS 策略?

您可以使用此代码检查是否启用了 FIPS:

public static object getKey(string Name)
{
    RegistryKey uac = Registry.LocalMachine.OpenSubKey(@"System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy", true);
    if (uac == null)
    {
        uac = Registry.LocalMachine.CreateSubKey(@"System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy");
    }
    return uac.GetValue(Name);
}

只需将 "Enabled" 键输入其中,它就会根据启用或禁用 [​​=16=] 1 或 0。

@ta-speot-is 已经在评论中回答了,如果有人忽略了该评论,请将其添加为答案。

要知道是否启用了 FIPS,我们只需检查 .Net Framework 4.0 及更高版本中可用的布尔标志 CryptoConfig.AllowOnlyFipsAlgorithms