在将两个字符串与==进行比较时,我发现了一种奇怪的行为。 一点上下文:以下代码来自应该充当服务器的应用程序,它应该验证clientcertificate的指纹。
我的客户端应用程序带有以下指纹的证书:" 2074529C99D93D5955FEECA859AEAC6092741205"。当我调用服务器时,此方法返回Valid:
static CertificateValidationResult ValidateClientCertificate(X509Certificate2 clientcertificate)
{
return clientcertificate.Thumbprint == "2074529C99D93D5955FEECA859AEAC6092741205"
? CertificateValidationResult.Valid
: CertificateValidationResult.Rejected;
}
用指纹" F9A021D2EFDCD3BD13671CE1D25CFE51BA5BA38E"更改为客户证书后并更改了服务器代码,以下方法返回Rejected:
static CertificateValidationResult ValidateClientCertificate(X509Certificate2 clientcertificate)
{
return clientcertificate.Thumbprint == "F9A021D2EFDCD3BD13671CE1D25CFE51BA5BA38E"
? CertificateValidationResult.Valid
: CertificateValidationResult.Rejected;
}
在每种情况下,字符串都完全相同,但只返回第一个有效字符串。为什么会这样?
答案 0 :(得分:2)
如果您复制/粘贴了指纹,则可能意外复制了隐藏的字符/符号。即使启用“显示空白”,这些也不会出现在Visual Studio IDE中。这可能会导致您目睹的各种奇怪的副作用。
最好的方法是手动将指纹输入到Visual Studio中,这将确保没有滑稽的角色滑入。这可能有点痛苦,但保证你的唯一方法实际上是比较喜欢。