hfSic

hfSic

短鏈分析

目前大部分場景下都是長連接,為了各種目的(簡訊等平台字符限制)進而產生了短鏈

短鏈生成#

  1. 通過哈希算法生成
  2. 通過發號器生成

二者最後都可以通過 base 算法減少長度

哈希算法生成#

可能 hash 衝突

// 1.hash
func GenerateShortenUrl(initUrl, userID string) string {
  // 通過 256 加密
	urlSHA256 := sha256f(initUrl + userID)
	genNum := new(big.Int).SetBytes(urlSHA256).Uint64()
  // base 58 不包括誤導性字母 o,O,I,l和+,/
  // 減少字符長度
	return base58Encoded([]byte(fmt.Sprintf("%d", genNum)))[0:8]
}

func sha256f(input string) []byte {
	hashed := sha256.Sum256([]byte(input))
	return hashed[:]
}

func base58Encoded(input []byte) string {
	encoded, err := base58.BitcoinEncoding.Encode(input)
	if err != nil {
		fmt.Println(err.Error())
		os.Exit(1)
	}
	return string(encoded)
}
發號器生成#

通過雪花算法生成 id

重定向#

一般通過 302 重定向,301永久重定向會在瀏覽器留下快取,無法通過訪問短鏈統計數據

參考#

淺談短鏈的設計

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。