hfSic

hfSic

短縮リンク分析

現在ほとんどのシーンでは長接続が一般的で、さまざまな目的(SMS などのプラットフォームの文字制限)により短縮リンクが生成されました。

短縮リンク生成#

  1. ハッシュアルゴリズムを使用して生成
  2. 発行器を使用して生成

両者は最終的に base アルゴリズムを通じて長さを減少させることができます。

ハッシュアルゴリズム生成#

ハッシュ衝突の可能性があります。

// 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 永続的リダイレクトはブラウザにキャッシュを残し、短縮リンクの統計データを取得できません。

参考#

短縮リンクの設計について

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。