¼ÓÃÜ¿ÉÒÔ°ïÖú±£»¤Êý¾Ý²»±»²é¿´ºÍÐ޸쬲¢ÇÒ¿ÉÒÔ°ïÖúÔÚ±¾²»°²È«µÄÐŵÀÉÏÌṩ°²È«µÄͨÐÅ·½Ê½¡£ÀýÈ磬¿ÉÒÔʹÓüÓÃÜËã·¨¶ÔÊý¾Ý½øÐмÓÃÜ£¬ÔÚ¼ÓÃÜ״̬Ï´«ÊäÊý¾Ý£¬È»ºóÓÉÔ¤¶¨µÄ½ÓÊÕ·½¶ÔÊý¾Ý½øÐнâÃÜ¡£Èç¹ûµÚÈý·½½Ø»ñÁ˼ÓÃܵÄÊý¾Ý£¬½âÃÜÊý¾ÝÊǺÜÀ§Äѵġ£

ΪÁË´ïµ½ÕâЩĿµÄ£¬Äú¿ÉÒÔʹÓÃËã·¨ºÍ¹ßÀýµÄ×éºÏ£¨³Æ×÷¼ÓÃÜ»ùÔª£©À´´´½¨¼ÓÃÜ·½°¸¡£°üÀ¨Ë½Ô¿¼ÓÃÜ£¨¶Ô³Æ¼ÓÃÜ£©¡¢¹«Ô¿¼ÓÃÜ£¨²»¶Ô³Æ¼ÓÃÜ£©¡¢¼ÓÃÜÇ©ÃûºÍ¼ÓÃܹþÏ£¡£

ÎÒÃÇʹÓù«Ô¿¼ÓÃÜ£¨²»¶Ô³Æ¼ÓÃÜ£©À´ÊµÏÖ×¢²áÂëµÄËã·¨¡£

¹«Ô¿¼ÓÃÜʹÓÃÒ»¸ö±ØÐë¶Ôδ¾­ÊÚȨµÄÓû§±£ÃܵÄ˽ԿºÍÒ»¸ö¿ÉÒÔ¶ÔÈκÎÈ˹«¿ªµÄ¹«Ô¿¡£¹«Ô¿ºÍ˽Կ¶¼ÔÚÊýѧÉÏÏà¹ØÁª£»Óù«Ô¿¼ÓÃܵÄÊý¾ÝÖ»ÄÜÓÃ˽Կ½âÃÜ£¬¶øÓÃ˽ԿǩÃûµÄÊý¾ÝÖ»ÄÜÓù«Ô¿ÑéÖ¤¡£

¶ÔÓÚ×¢²áÂëÀ´Ëµ£¬ÎÒÃÇʹÓÃ˽ԿÀ´¶ÔÒ»¸ö×Ö·û´®£¨Óû§Ãû£©Ç©Ãû£¬È»ºóʹÓù«Ô¿¶ÔÕâ¸öÇ©Ãû£¨×¢²áÂ룩½øÐÐÑéÖ¤¡£ÓÉÓÚ¹«Ô¿Ö»ÄÜÓÃÓÚÑéÖ¤£¬ËùÒÔÎÒÃÇ¿ÉÒÔ·ÅÐİѹ«Ô¿·Ö·¢³öÈ¥£»Ë½Ô¿³×ÓÃÀ´½øÐÐÇ©ÃûµÄ£¬ËùÒÔ˽Կ³×Òª±£´æÔÚ¿ª·¢ÕßÊÖÖеġ£ÕâÑù¾Í´ïµ½ÁË×¢²áÈÏÖ¤µÄÄ¿µÄ¡£Ä¿Ç°Ê¹Óá°Óû§Ãû¡¢×¢²áÂ롱ģʽע²áµÄÈí¼þ¶¼Ó¦¸ÃÊÇʹÓÃÕâÒ»¼¼Êõ¡£

Ê×ÏÈÎÒÃÇÉú³É×Ô¼ºÒªÊ¹ÓõÄÒ»¸ö¹«Ô¿ºÍ˽Կ¡£

Private rsa As New Security.Cryptography.RSACryptoServiceProvider

RSACryptoServiceProviderÀàÌṩRSAËã·¨µÄʵÏÖÖ´Ðв»¶Ô³Æ¼ÓÃܺͽâÃÜ¡£Í¨¹ýToXMLString¾Í¿ÉÒÔÉú³ÉÎÒÃÇÐèÒªµÄ¹«Ô¿ºÍ˽Կ¡£

rsa.ToXmlString(False)

rsa.ToXmlString(True)

µ±²ÎÊýΪFalseµÄʱºò£¬½öÉú³É¹«Ô¿£»TrueµÄʱºò½«»á°Ñ¹«Ô¿ºÍ˽Կȫ²¿Éú³É¡£ÎÒÃÇÒ»°ãͨ¹ýToXmlString(False)µÃµ½Ò»¸ö¹«Ô¿×Ö·û´®£»Í¨¹ýToXmlString(True)µÃµ½Ò»¸ö˽Կ×Ö·û´®£¨ËäÈ»ÆäÖк¬Óй«Ô¿£©¡£ÎÒÃÇ¿ÉÒÔ½«ÕâÁ½¸öÃÜÔ¿±£´æÔÚ±¾»úÉÏÃæ£¬Í¨¹ý×Ö·û´®³£Á¿¶¨Ò岢ʹÓá£Ò²¾ÍÊÇ˵ÎÒÃǵÄ×¢²áÐÅÏ¢½«Ê¹ÓÃΨһµÄ¹«Ô¿ºÍ˽Կ¡£

 

È»ºóÎÒÃÇͨ¹ý¹«Ô¿ºÍ˽Կ¶ÔÖ¸¶¨µÄ×Ö·û´®½øÐÐÇ©Ãû¡£

rsa.FromXmlString(PRIVATE_KEY)

Dim f As New Security.Cryptography.RSAPKCS1SignatureFormatter(rsa)

f.SetHashAlgorithm("SHA1")

Dim source() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(UID)

Dim sha As New Security.Cryptography.SHA1Managed

Dim result() As Byte = sha.ComputeHash(source)

Dim regkey() As Byte = f.CreateSignature(result)

SerialNumber = Convert.ToBase64String(regkey)

ͨ¹ý¸Õ²ÅµÃµ½µÄË½Ô¿ÖØÐ³õʼ»¯rsa¶ÔÏó£¬È»ºóͨ¹ýRSAPKCS1SignatureFormatterÀàÀ´½øÐÐÇ©Ãû¡£ÎÒÃǽ«ÊäÈëµÄ×Ö·û´®×ª»¯³É×Ö½ÚÊý×飨ÎÒÃÇÕâÀïĬÈÏÓû§ÃûÖ»ÄÜÓÉASCII×Ö·û×é³É£©£¬Í¨¹ýSHA1¹þÎ÷Ëã·¨¼ÆËãÆä¹þÏ£Öµ¡£ÔÙʹÓÃCreateSignature·½·¨½«µÃµ½µÄ¹þÎ÷Öµ½øÐÐÇ©Ãû¡£×îºóÎÒÃǽ«µÃµ½µÄ×Ö½ÚÊý×éת»¯³É×Ö·û´®×÷Ϊע²áÂë¡£Õâ¾ÍÊÇÉú³É×¢²áÂëµÄ¹ý³Ì¡£ÎÒÃÇ¿ÉÒÔÖØ¸´Ê¹ÓÃÕâÒ»¶Î³ÌÐò¶Ô²»Í¬µÄÓû§Ãû½øÐÐÇ©Ãû£¬´Ó¶øµÃµ½ÓëÖ®¶ÔÓ¦µÄ²»Í¬×¢²áÂë¡£

 

×îºóÎÒÃǰѸղŵõ½µÄÓû§ÃûºÍ×¢²áÂë½øÐÐÑéÖ¤¡£

rsa.FromXmlString(PUBLIC_KEY)

Dim f As New Security.Cryptography.RSAPKCS1SignatureDeformatter(rsa)

f.SetHashAlgorithm("SHA1")

Dim key() As Byte = Convert.FromBase64String(SerialNumber)

Dim sha As New Security.Cryptography.SHA1Managed

Dim name() As Byte = sha.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(UID))

Result = f.VerifySignature(name, key)

ÕâÒ»´ÎÎÒÃÇʹÓù«Ô¿À´³õʼ»¯rsa¶ÔÏó£¬È»ºóͨ¹ýRSAPKCS1SignatureDeformatterÀàÀ´Ñé֤ǩÃû¡£ÎÒÃǽ«µÃµ½µÄ×¢²áÂë·´Ïòת»¯Îª×Ö½ÚÊý×飻²¢½«Óû§Ãû½øÐйþÎ÷¼ÆËãµÃµ½¹þÎ÷Öµ¡£×îºóͨ¹ýVerifySignature½øÐÐÑéÖ¤¡£

 
´ÓÉÏÃæµÄ³ÌÐò¿ÉÒÔ¿´³ö£¬Éú³É×¢²áÂëÐèҪ˽Կ£¨Ë½Ô¿ÄÚ¸½´ø¹«Ô¿ÐÅÏ¢£©£¬¶øÇÒ¿ÉÒÔÉú³ÉÈÎÒâ¶àµÄÓû§Ãû¡¢×¢²áÂë¶Ô¡£¶øÍ¨¹ý¹«Ô¿£¬ÎÒÃÇÖ»ÄܽøÐÐÑéÖ¤¶ø²»ÄÜÉú³É¡£ËùÒÔ¹«Ô¿¿ÉÒÔ·ÅÐĵķ¢·Å¸øËùÓеÄÓû§½øÐÐÑéÖ¤£¬¶øË½Ô¿È´²»ÄÜ¡£ËùÒÔÔÚ·¢Ðеİ汾ÖпÉÒÔ¸½´ø¹«Ô¿ºÍÑéÖ¤Ëã·¨¡£ÒòΪ¼´±ãÓû§µÃµ½Á˹«Ô¿ºÍÑéÖ¤Ëã·¨Ò²ÎÞ·¨¼òµ¥µÄÆÆ½â¡£

ÏÖÔÚÍøÂçÉÏÁ÷ÐеÄ×¢²á»ú£¬ºÜ´ó³Ì¶ÈÉÏÊÇÆÆ½âÁËÈí¼þµÄ˽Կ£¬´Ó¶ø´ïµ½ÎÞÏÞÖÆµÄÉú³ÉËùÐèÒªµÄ×¢²áÐÅÏ¢¡£µ«ÊÇÈç¹ûÓû§·´±àÒëÄãµÄ²úÆ·£¬²¢ÇÒÐÞ¸ÄÁËÖмä´úÂ룬ÄÇôËü½«»áÈÆ¹ý×¢²áµÄÅжÏÂß¼­¡£Õâ¾Í²»ÊÇÕâһƪËùÄܽâ¾öµÄÎÊÌâÁË¡£ÒòΪ¼´ÊÇÄãʹÓÃÁËWeb Service¼¼Êõ½øÐÐÔÚÏß¼¤»î»ò×¢²á£¬»¹ÊÇ¿ÉÒÔͨ¹ýÍøÂçÕìÌýÀ´·ÖÎö·þÎñÆ÷µÄÐÅÏ¢£¬Ä£ÄâÒ»¸ö¼ÙµÄ·þÎñÆ÷À´½øÐеġ£