public void Base36LongTest(long num) { var encodedText = Base36Encoder.Encode(num); var decodeNum = Base36Encoder.DecodeLong(encodedText); Assert.Equal(num, decodeNum); }
public void Base36StringTest(string str) { var encodedText = Base36Encoder.Encode(str); var decodeStr = Base36Encoder.DecodeString(encodedText); Assert.Equal(str, decodeStr, ignoreCase: true); }
public void Base36EncodeTest() { Base36Encoder.Encode(Guid.NewGuid()); Base36Encoder.Encode(DateTime.UtcNow.Ticks); Base36Encoder.Encode("xxxxxxxxx"); //Base36Encoder.Encode("你好", Encoding.UTF8); // not supported }
public Post Save(string slug, Post content) { var isNew = string.IsNullOrEmpty(slug); if (isNew) { // No slug was specified, so we need to get the next one var docs = db.GetCollection("sequences"); docs.EnsureIndex(IndexKeys.Ascending("Name"), IndexOptions.SetUnique(true)); var sequence = docs.FindAndModify(Query.EQ("Name", "slug"), null, Update.Inc("Current", 1), true, true) .GetModifiedDocumentAs <Incrementor>(); slug = Base36Encoder.Encode(sequence.Current); } content.Slug = slug; content.Version = isNew ? 1 : GetLatestVersion(slug) + 1; db.GetCollection <Post>("posts").Save(content, WriteConcern.Acknowledged); return(content); }
public void Base36GuidTest() { var guid = Guid.NewGuid(); var encodedText = Base36Encoder.Encode(guid); var decodeGuid = Base36Encoder.DecodeGuid(encodedText); Assert.Equal(guid, decodeGuid); }
public SerialNumberTests() { _encoder = new Base36Encoder(); _config = new SerialNumberConfiguration(_encoder); _sut = new SerialNumber("A12345B", _config); }
public ActionResult Auto(string k, string h, string d = null) { // Parsear Key de Token de Auto-Login Int64 key; try { key = new Base36Encoder().Decode(k); } catch { return(Redirect("http://www.kms.me/#login")); } // Buscar Token de Auto-Login por su llave var autologinToken = Database.WebAutoLoginTokenStore.GetFirst( filter: f => f.Key == key, orderBy: o => o.OrderBy(b => b.CreationDate) ); if (autologinToken == null) { return(Redirect("http://www.kms.me/#login")); } // Determinar si aún es vigente el Token y la IP de origen coincide if ( autologinToken.CreationDate < DateTime.UtcNow.AddMinutes(-2) || ( autologinToken.IPAddress != null && autologinToken.IPAddress != Request.UserHostAddress ) ) { Database.WebAutoLoginTokenStore.Delete(autologinToken.Id); Database.SaveChanges(); return(Redirect("http://www.kms.me/#login")); } // Obtener Consumer Secret y Token Secret var consumerSecret = autologinToken.Token.ApiKey.Secret.ToString("N"); var tokenSecret = autologinToken.Token.Secret.ToString("N"); // Calcular hash HMAC-SHA1 de Secreto de Token de Auto-Login var hmacSha1Key = consumerSecret + "&" + tokenSecret; var hmacSha1 = new HMACSHA1(Encoding.UTF8.GetBytes(hmacSha1Key)); var hmacSha1Bytes = hmacSha1.ComputeHash( Encoding.UTF8.GetBytes(autologinToken.Secret.ToString("N")) ); var hmacSha1String = new StringBuilder(hmacSha1Bytes.Length * 2); for (int i = 0; i < hmacSha1Bytes.Length; i++) { hmacSha1String.Append(hmacSha1Bytes[i].ToString("x2")); } // Validar que {s} coincida con Hash calculado if (hmacSha1String.ToString().ToUpper() != h.ToUpper()) { Database.WebAutoLoginTokenStore.Delete(autologinToken.Id); Database.SaveChanges(); return(Redirect("http://www.kms.me/#login")); } // Crear sesión y eliminar Token de Auto-Login var user = autologinToken.Token.User; FormsAuthentication.SetAuthCookie(user.Guid.ToBase64String(), true); Database.WebAutoLoginTokenStore.Delete(autologinToken.Id); if (d == "token" && autologinToken.Token != null) { Database.TokenStore.Delete(autologinToken.Token); } Database.SaveChanges(); // Redirigir a Dashboard return(Redirect("~/Overview")); }
internal static byte[] FromBase36String(this string base36String) { return(Base36Encoder.DecodeBytes(base36String)); }
internal static string ToBase36String(this byte[] bytes) { return(Base36Encoder.EncodeBytes(bytes)); }