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永久重定向会在浏览器留下缓存,无法通过访问短链统计数据

参考#

浅谈短链的设计

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。