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); }
public void AddToRSAToken(RSAToken rSAToken) { base.AddObject("RSAToken", rSAToken); }
public static RSAToken CreateRSAToken(string serial, global::System.DateTimeOffset issued) { RSAToken rSAToken = new RSAToken(); rSAToken.Serial = serial; rSAToken.Issued = issued; return rSAToken; }
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; }