1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > ASP VBSCRIPT VBA RSA 公钥加密 私钥解密 私钥签名 公钥验签

ASP VBSCRIPT VBA RSA 公钥加密 私钥解密 私钥签名 公钥验签

时间:2019-10-13 10:48:35

相关推荐

ASP VBSCRIPT VBA RSA 公钥加密 私钥解密 私钥签名 公钥验签

<% '@title: Class_Crypt_Rsa'@author: '@date: -10-28'@description: RSA 公钥加密->私钥解密 , 私钥签名->公钥验签Class Class_Crypt_RsaPrivate TAsc,objRsaPrivate PrivateKey_,PublicKey_'@PrivateKey: Your personal private key. Keep this hidden. Need C# format.Public Property Get PrivateKeyPrivateKey = PrivateKey_End PropertyPublic Property Let PrivateKey(Value)PrivateKey_ = ValueobjRsa.FromXmlString (PrivateKey_)PublicKey_ = objRsa.ToXmlString(False)End Property'@PublicKey: Key for others to encrypt data with.Public Property Get PublicKeyPublicKey = PublicKey_End PropertyPublic Property Let PublicKey(Value)PublicKey_ = ValueobjRsa.FromXmlString (PublicKey_)End PropertyPrivate Sub Class_Initialize()Set TAsc = Server.CreateObject("System.Text.UTF8Encoding")Set objRsa = Server.CreateObject("System.Security.Cryptography.RSACryptoServiceProvider")CreateKey()End SubPrivate Sub Class_Terminate()Set objRsa = NothingSet TAsc = NothingEnd SubPublic Sub CreateKey()PrivateKey_ = objRsa.ToXmlString(True)PublicKey_ = objRsa.ToXmlString(False)End Sub'@Encrypt(ByRef Str): 公钥加密Public Function Encrypt(ByRef Str)Dim BytesBytes = TAsc.GetBytes_4(Str)Encrypt = Bytes2Base64(RsaEncrypt((Bytes)))End FunctionPrivate Function RsaEncrypt(ByRef Bytes)RsaEncrypt = objRsa.Encrypt((Bytes),False)End Function'@Decrypt(ByRef Bytes): 私钥解密Public Function Decrypt(ByRef Str)Dim BytesBytes=RsaDecrypt(Base642Bytes(Str))Decrypt = TAsc.GetString((Bytes))End FunctionPrivate Function RsaDecrypt(ByRef Bytes)RsaDecrypt = objRsa.Decrypt((Bytes), False)End Function'@SignData(ByRef Str,ByRef Hash): 私钥签名 Hash(MD5 SHA1 SHA256)Public Function SignData(ByRef Str,ByRef Hash)Dim BytesBytes = TAsc.GetBytes_4(Str)SignData = Bytes2Base64(SignHash(Bytes, Hash))End FunctionPrivate Function SignHash(ByRef Bytes,ByRef Hash)Dim MapNameToOIDIf Hash="MD5" ThenMapNameToOID = "1.2.840.113549.2.5"Bytes = Md5(Bytes)SignHash = objRsa.SignHash((Bytes),MapNameToOID)End IfIf Hash="SHA1" ThenMapNameToOID = "1.3.14.3.2.26"Bytes = SHA1(Bytes)SignHash = objRsa.SignHash((Bytes),MapNameToOID)End IfIf Hash="SHA256" ThenMapNameToOID = "2.16.840.1.101.3.4.2.1"Bytes = SHA256(Bytes)SignHash = objRsa.SignHash((Bytes),MapNameToOID)End IfEnd Function'@VerifyData(ByRef str,ByRef Hash,ByRef StrSign): 公钥验签Public Function VerifyData(ByRef str,ByRef Hash,ByRef StrSign)Dim Bytes,BytesSignBytes = TAsc.GetBytes_4(Str)BytesSign = Base642Bytes(StrSign)VerifyData = objRsa.VerifyData((Bytes),Hash,(BytesSign))End Function'HashPublic Function Md5(ByRef Bytes)Dim EnSet En = Server.CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")Md5 = puteHash_2((Bytes))Set En = NothingEnd FunctionPublic Function SHA1(ByRef Bytes)Dim EnSet En = Server.CreateObject("System.Security.Cryptography.SHA1CryptoServiceProvider")SHA1 = puteHash_2((Bytes))Set En = NothingEnd FunctionPublic Function SHA256(ByRef Bytes)Dim EnSet En = Server.CreateObject("System.Security.Cryptography.SHA256CryptoServiceProvider")SHA256 = puteHash_2((Bytes))Set En = NothingEnd Function'Base64Public Function Base642Bytes(str)Dim objXML, objXMLNodeSet objXML = Server.CreateObject("msxml2.domdocument")Set objXMLNode = objXML.createelement("b64")objXMLNode.datatype = "bin.base64"objXMLNode.text = strBase642Bytes = objXMLNode.nodetypedvalueSet objXMLNode = NothingSet objXML = NothingEnd FunctionPublic Function Bytes2Base64(bytes)Dim objXML, objXMLNodeSet objXML = Server.CreateObject("msxml2.domdocument")Set objXMLNode = objXML.createelement("b64")objXMLNode.datatype = "bin.base64"objXMLNode.nodetypedvalue = bytesBytes2Base64 = objXMLNode.textSet objXMLNode = NothingSet objXML = NothingEnd FunctionEnd Class%>

使用

privatekey_pem="MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC7wJL6+hjchXCbZCMkWDi7JThNf8f9wK4b7xSAavSqy9fo5SfEq7xgbXyEoYH/vL+cHCVzSZgfw9KQOZPZIZHnQszPZ7+vvIGS9rOXKS6XTOpVPAkcA6u1cNUrxBkwf+8XNE9mu+vVJvAIw+snlkZG198+ZP/sxWTzJZCj1eUCrYAHPrZrHA7UULpNlzc+mYT7ymvXz4CfMRqLRMKOrc1oLbxBavcsYkM798a1P9tbPS4Gtg+EIDF5jJawOiSJfQ1TSLFQHY+6Uaq+zO2OvFlhA+xkgiBnWUzP/jeut8caSu2Y54JLbn5T9uXN9lJEXpYNUiFPAErVwVFvi1WB3XTvAgMBAAECggEBALEYV0tmxjaTo4DfNoqcsH5OAEqRohnHOjNdEvCCcl/8QJ8ML7PB7cDi5RXRpeaMqgvdPLH/E/+6XQ3vUXb4xD/n8XodOWDRJUNzcji9/pV2Vn6pT0peaAOP93L92Gi389TmYZLc5Pk8biNGcbP4ejdufcPDzucN1kfHAiSXqBkZ4G/Fp8ImaG9EY2KdZ65cDUHPbx786oI4U/UYcQ2BYd5tjH0A2WVXna1Ok6Qz51gS5h8pen2ga24FZn5IuGgm9ZXVRjJXH16bmLz9Bxj7qHVmkyAUUwNQelvGnmpF0JKfPvs5yhyavMPqEnAxwwv3pGkNYnYFbvX7z387mWy/9jECgYEA9C9bAbM87egP+dLaA8IQA2lJEBG6b5pJidw40lm0E2Ey1v2NMCEhd3stEUSrS0QfVN9S0N0aPZmsBNkbm7P7nSviq53n2Qo/mEP06dhx7+MI1nKlmTrgqH0HvCYK7+55vxojZsuvj9E9Q7tE5KXJsKZ8syLrWbLPvrPPF4TVwjcCgYEAxNY0H25RbMJGFUaZ/a4b6/yPXECdFX7LeFxFAiJ4ds+zavenRMacm4MNjY91m90t7p0UZYvytk39YeX2/J6x0C2U/gQE3VS5ER+NAOqrl9UgBxZeb0e5Cz3TcU4w/zT+sQedYqG4p/ldT4UnBKXleI/+l6H86Qnix1O9Xae25wkCgYB3jpgohPHYKj9oOmy0Wlgs02gKjiOScSCAd2r60yDwPC8ARLTUU+Rm89BlHBIikAAnNhD+YsNuVcd7uDFkUwNnOQ2KqY3THsl0bBGGTYu7wJWbKhcap1FILa+T16yTPVgu0UV0F1amO/SbLR3WNbZC38E+lGJXUM2WucMz6L4gkQKBgQCa4OzsWlJpYEfiz8W1LP09Z2GqNhEj67vP/dIyxsrAudcz8J/F5v0tBCZy35GrzZIpsaFt8XtN5PndwSPhTEEfS+5zHNhzCwn/pjK9qOjRtFnaGci+iNHaPZCVE/BLrvhEdXhqNlPkn7rDKkM0ThDMF4k86LHm7+dn7cUP3zp0eQKBgCj5Tcne23U8C93ifTM0mzlx3VEilL41lbS3pIiABiV+Cjk/e9YqYmEdkwwCk8g2mLmBYmzRCnCTCJbEOaLu4YPI2v1qbgo3WcTpodt2x7XskAPC8i4Kb7I9b1kMvFXQlxMlLGY4uz7JKSzp58ja5dFV2b4r1KlEd6x4ILF9OT4E"privatekey_csharp="<RSAKeyValue><Modulus>u8CS+voY3IVwm2QjJFg4uyU4TX/H/cCuG+8UgGr0qsvX6OUnxKu8YG18hKGB/7y/nBwlc0mYH8PSkDmT2SGR50LMz2e/r7yBkvazlykul0zqVTwJHAOrtXDVK8QZMH/vFzRPZrvr1SbwCMPrJ5ZGRtffPmT/7MVk8yWQo9XlAq2ABz62axwO1FC6TZc3PpmE+8pr18+AnzEai0TCjq3NaC28QWr3LGJDO/fGtT/bWz0uBrYPhCAxeYyWsDokiX0NU0ixUB2PulGqvsztjrxZYQPsZIIgZ1lMz/43rrfHGkrtmOeCS25+U/blzfZSRF6WDVIhTwBK1cFRb4tVgd107w==</Modulus><Exponent>AQAB</Exponent><P>9C9bAbM87egP+dLaA8IQA2lJEBG6b5pJidw40lm0E2Ey1v2NMCEhd3stEUSrS0QfVN9S0N0aPZmsBNkbm7P7nSviq53n2Qo/mEP06dhx7+MI1nKlmTrgqH0HvCYK7+55vxojZsuvj9E9Q7tE5KXJsKZ8syLrWbLPvrPPF4TVwjc=</P><Q>xNY0H25RbMJGFUaZ/a4b6/yPXECdFX7LeFxFAiJ4ds+zavenRMacm4MNjY91m90t7p0UZYvytk39YeX2/J6x0C2U/gQE3VS5ER+NAOqrl9UgBxZeb0e5Cz3TcU4w/zT+sQedYqG4p/ldT4UnBKXleI/+l6H86Qnix1O9Xae25wk=</Q><DP>d46YKITx2Co/aDpstFpYLNNoCo4jknEggHdq+tMg8DwvAES01FPkZvPQZRwSIpAAJzYQ/mLDblXHe7gxZFMDZzkNiqmN0x7JdGwRhk2Lu8CVmyoXGqdRSC2vk9eskz1YLtFFdBdWpjv0my0d1jW2Qt/BPpRiV1DNlrnDM+i+IJE=</DP><DQ>muDs7FpSaWBH4s/FtSz9PWdhqjYRI+u7z/3SMsbKwLnXM/Cfxeb9LQQmct+Rq82SKbGhbfF7TeT53cEj4UxBH0vucxzYcwsJ/6Yyvajo0bRZ2hnIvojR2j2QlRPwS674RHV4ajZT5J+6wypDNE4QzBeJPOix5u/nZ+3FD986dHk=</DQ><InverseQ>KPlNyd7bdTwL3eJ9MzSbOXHdUSKUvjWVtLekiIAGJX4KOT971ipiYR2TDAKTyDaYuYFibNEKcJMIlsQ5ou7hg8ja/WpuCjdZxOmh23bHteyQA8LyLgpvsj1vWQy8VdCXEyUsZji7PskpLOnnyNrl0VXZvivUqUR3rHggsX05PgQ=</InverseQ><D>sRhXS2bGNpOjgN82ipywfk4ASpGiGcc6M10S8IJyX/xAnwwvs8HtwOLlFdGl5oyqC908sf8T/7pdDe9RdvjEP+fxeh05YNElQ3NyOL3+lXZWfqlPSl5oA4/3cv3YaLfz1OZhktzk+TxuI0Zxs/h6N259w8PO5w3WR8cCJJeoGRngb8WnwiZob0RjYp1nrlwNQc9vHvzqgjhT9RhxDYFh3m2MfQDZZVedrU6TpDPnWBLmHyl6faBrbgVmfki4aCb1ldVGMlcfXpuYvP0HGPuodWaTIBRTA1B6W8aeakXQkp8++znKHJq8w+oScDHDC/ekaQ1idgVu9fvPfzuZbL/2MQ==</D></RSAKeyValue>"Set r1= New Class_Crypt_Rsar1.Privatekey=privatekey_csharp '设置私钥'r1.Publickey="xxxx" '设置公钥Publickey=r1.Publickey '也可通过私钥获得公钥a="Hello WTS"b=r1.Encrypt(a) '加密c=r1.Decrypt(b) '解密d=r1.SignData(a,"SHA1") '签名支持SHA1 SHA256 MD5e=r1.VerifyData(a,"SHA1",d) '验签Set r1=Nothing

github源:/ekede/WTS-Classic-ASP-MVC-Framework/blob/master/inc/class/crypt/rsa.asp

关于使用环境,比较尴尬,本人windows,服务器下会有报错,另外win7和建虚拟机跑又可以,.vbs直接运行都是可以的,猜测跟IIS配置或权限有关系,个人能力有限,具体也搞不明白.

使用c#特有地秘钥格式,pem格式使用前要先想办法转成c# xml格式。另外为了方便做了个简单格式转换软件,大家下载测试下

/download/todaygods/13097578

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。