代码拉取完成,页面将自动刷新
package utils
import (
"crypto/md5"
"encoding/hex"
"strconv"
)
const (
VAL = 0x3FFFFFFF
INDEX = 0x0000003D
)
var (
alphabet = []byte("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
)
/** implementation of short url algorithm **/
func MakeShortURL(longURL string) ([4]string, error) {
md5Str := getMd5Str(longURL)
//var hexVal int64
var tempVal int64
var result [4]string
var tempUri []byte
for i := 0; i < 4; i++ {
tempSubStr := md5Str[i*8 : (i+1)*8]
hexVal, err := strconv.ParseInt(tempSubStr, 16, 64)
if err != nil {
return result, nil
}
tempVal = int64(VAL) & hexVal
var index int64
tempUri = []byte{}
for i := 0; i < 6; i++ {
index = INDEX & tempVal
tempUri = append(tempUri, alphabet[index])
tempVal = tempVal >> 5
}
result[i] = string(tempUri)
}
return result, nil
}
/** generate md5 checksum of URL in hex format **/
func getMd5Str(str string) string {
m := md5.New()
m.Write([]byte(str))
c := m.Sum(nil)
return hex.EncodeToString(c)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。