none
RSA验签,字符串中包含中文会验签失败,如果没有中文则可以通过,如何解决呢?

    问题

  • 如字符串:

    var signContent= "<?xml version=\"1.0\" encoding = \"GBK\"?><BEDC><Message><remark>提现转账</remark><date></date></Message></BEDC>"

    验签主要代码:

    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                    rsa.PersistKeyInCsp = false;
                    RSACryptoServiceProviderExtension.LoadPublicKeyPEM(rsa, publicKey);
                    SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
                    if (string.IsNullOrEmpty(charset))
                    {
                        charset = "UTF-8";
                    }
                    bool bVerifyResultOriginal = rsa.VerifyData(Encoding.GetEncoding(charset).GetBytes(signContent), sha1, Convert.FromBase64String(sign));

                    

                    return bVerifyResultOriginal;

    2016年11月1日 2:59

全部回复

  • sign签名字符串是java服务器GBK签名而来的
    2016年11月1日 3:07
  • 是否可以考虑先用正则表达式先验证是否有中文,有直接Fail;否则再进一步验证签名。

    ASP.NET Forum
    StackOverFlow
    FreeRice Donate
    Issues to report



    2016年11月1日 3:31
    版主
  • Hi 昨夜流星,

    应该是编码导致的问题,你有把双方的编码统一下吗?如果都是有unicode编码,这样在验证的时候,应该就不会有问题了。

    你可以尝试一下,签名验证都使用汉字,你看能否通过。如果能通过说明是编码的导致,需要统一编码。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年11月18日 7:27
    版主