Example #1
0
 static void DoTest()
 {
     string pubKey = GetKey(false);//只能用來解密
     string priKey = GetKey(true);//加解密都行
     string data = "KimPassword";
     RSAToken token = new RSAToken();
     string tokenString = token.GenerateTokenString(priKey, data, DateTime.Now.AddDays(3));
     RSAToken decryptToken = token.FromTokenString(pubKey, tokenString);
     Console.WriteLine(tokenString);
     Console.WriteLine(decryptToken.Value);
     Console.WriteLine(data == decryptToken.Value);
 }
Example #2
0
 public void AddToRSAToken(RSAToken rSAToken)
 {
     base.AddObject("RSAToken", rSAToken);
 }
Example #3
0
 public static RSAToken CreateRSAToken(string serial, global::System.DateTimeOffset issued)
 {
     RSAToken rSAToken = new RSAToken();
     rSAToken.Serial = serial;
     rSAToken.Issued = issued;
     return rSAToken;
 }
Example #4
0
 public RSAToken FromTokenString(string pubOrPriKey, string tokenString)
 {
     var buffer = Convert.FromBase64String(tokenString);
     var data = buffer.Take(buffer.Length - 128).ToArray();
     var sig = buffer.Skip(data.Length).Take(128).ToArray();
     using (var rsa = new RSACryptoServiceProvider())
     using (var sha1 = new SHA1CryptoServiceProvider())
     {
         rsa.FromXmlString(pubOrPriKey);
         if (rsa.VerifyData(data, sha1, sig))
         {
             using (var ms = new MemoryStream(data))
             using (var reader = new BinaryReader(ms))
             {
                 var ticks = reader.ReadInt64();
                 var value = reader.ReadString();
                 var expires = new DateTime(ticks);
                 var token = new RSAToken();
                 token.Expires = expires;
                 token.Value = value;
                 return token;
             }
         }
     }
     return null;
 }