Beispiel #1
0
        /// <summary>
        /// CRC32のハッシュからからハッシュテキストを返す。
        /// </summary>
        /// <param name="hash">CRC32</param>
        /// <returns>ハッシュテキスト</returns>
        public static string ComputeHashIds(long hash)
        {
            //// hashidsでhashを算出する。
            HashidsNet.Hashids hashids = new HashidsNet.Hashids(Salt, 0, Alphabet);

            var result = hashids.EncodeLong(hash);

            return(result);
        }
Beispiel #2
0
        /// <summary>
        /// テキストからHashを返す。
        /// </summary>
        /// <param name="text">テキスト</param>
        /// <returns>Hash</returns>
        public static string ComputeHashX(string text)
        {
            string result = string.Empty;

            byte[] bytes = Encoding.UTF8.GetBytes(text.Replace("-", string.Empty));
            //// テキストのCRC32を計算する。
            long crc = Crc32Algorithm.Compute(bytes);

            //// Encodeの入力は正の整数が必要なため絶対値を取る。
            crc = Math.Abs(crc);

            //// hashidsでhashを算出する。
            HashidsNet.Hashids hashids = new HashidsNet.Hashids(Salt, 0, Alphabet);

            result = hashids.EncodeLong(crc);

            return(result);
        }
Beispiel #3
0
        public string GenerateAccessToken(string authSecret, User user, DateTime accessTokenExpiration)
        {
            DateTimeOffset dto      = new DateTimeOffset(DateTime.UtcNow, TimeSpan.Zero);
            var            unixDate = dto.ToUnixTimeMilliseconds();
            var            hashIds  = new HashidsNet.Hashids(salt: Salt.IdSalt);
            var            userCode = hashIds.EncodeLong(unixDate, user.Id);

            var claims = new[] {
                new Claim("userId", userCode),
            };

            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(authSecret));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var token = new JwtSecurityToken(claims: claims,
                                             expires: accessTokenExpiration,
                                             signingCredentials: creds);

            return(new JwtSecurityTokenHandler().WriteToken(token));
        }
Beispiel #4
0
 /// <summary>
 /// 分配一个新的全局唯一ID
 /// </summary>
 /// <returns></returns>
 public static string NewGUID()
 {
     return(hashIds.EncodeLong(serverId, DateTime.UtcNow.Ticks - 636503616000000000L, System.Threading.Interlocked.Increment(ref conTick))); // 636503616000000000 = ticks of 2018-01-01 00:00:00
 }
Beispiel #5
0
 /// <summary>
 /// 分配一个新的全局唯一ID
 /// </summary>
 /// <returns></returns>
 public static string NewGUID()
 {
     return(hashIds.EncodeLong(serverId, DateTime.UtcNow.Ticks - 636503616000000000L)); // 636503616000000000 = ticks of 2018-01-01 00:00:00
 }
Beispiel #6
0
 public void RoundtripLongs()
 {
     var encodedValue = _hashids.EncodeLong(_longs);
     var decodedValue = _hashids.DecodeLong(encodedValue);
 }