aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Mehri <[email protected]>2020-05-09 14:44:08 -0600
committerRyan Mehri <[email protected]>2020-05-09 14:44:08 -0600
commit2702cf7b0be3f6a5572b1ab2db59a15c66d659f6 (patch)
tree57022980cf53860c3d19cb11684a794c78938701
parentoutline insert op (diff)
downloadctrl-v-2702cf7b0be3f6a5572b1ab2db59a15c66d659f6.tar.xz
ctrl-v-2702cf7b0be3f6a5572b1ab2db59a15c66d659f6.zip
Add hashing function
-rw-r--r--.gitignore3
-rw-r--r--hashing/hash.go26
2 files changed, 28 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 2eea525..451fb35 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-.env \ No newline at end of file
+.env
+.idea \ No newline at end of file
diff --git a/hashing/hash.go b/hashing/hash.go
new file mode 100644
index 0000000..400659e
--- /dev/null
+++ b/hashing/hash.go
@@ -0,0 +1,26 @@
+package hashing
+
+import (
+ "crypto/md5"
+ "encoding/hex"
+ "math/big"
+ "time"
+)
+
+const UrlLength = 7
+
+// GenerateURI creates a unique identifier for a paste based on ip and timestamp
+func GenerateURI(ip string) string {
+ timeStamp := time.Now().String()
+ return hashString(ip + timeStamp)[:UrlLength]
+}
+
+// hashes using MD5 and then converts to base 62
+func hashString(text string) string {
+ hash := md5.Sum([]byte(text))
+ hexStr := hex.EncodeToString(hash[:])
+
+ bi := big.NewInt(0)
+ bi.SetString(hexStr, 16)
+ return bi.Text(62)
+} \ No newline at end of file