-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdelium.go
More file actions
executable file
·115 lines (87 loc) · 2.33 KB
/
Copy pathdelium.go
File metadata and controls
executable file
·115 lines (87 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package utils
import (
"crypto/sha256"
"crypto/sha512"
"encoding/hex"
"log"
"strconv"
"strings"
)
type D_hash struct {
Byte_slice []byte
String string
}
func D256(strData string, deleteStep int, repeat int) *D_hash {
dataHash := sha256.Sum256([]byte(strData))
var strDataHash string = hex.EncodeToString(dataHash[:])
for i := 0; i < repeat; i++ {
var result string = ""
for r := 0; r < len(strDataHash); r++ {
if (r+1)%deleteStep != 0 {
result += string(strDataHash[r])
}
}
hashByte32 := sha256.Sum256([]byte(result))
strDataHash = hex.EncodeToString(hashByte32[:])
}
return &D_hash{
Byte_slice: []byte(strDataHash),
String: strDataHash,
}
}
func D512(strData string, deleteStep int, repeat int) *D_hash {
dataHash := sha512.Sum512([]byte(strData))
var strDataHash string = hex.EncodeToString(dataHash[:])
for i := 0; i < repeat; i++ {
var result string = ""
for r := 0; r < len(strDataHash); r++ {
if (r+1)%deleteStep != 0 {
result += string(strDataHash[r])
}
}
hashByte32 := sha512.Sum512([]byte(result))
strDataHash = hex.EncodeToString(hashByte32[:])
}
return &D_hash{
Byte_slice: []byte(strDataHash),
String: strDataHash,
}
}
func D256C(strData string, path string) *D_hash {
dataHash := sha256.Sum256([]byte(strData))
var strDataHash string = hex.EncodeToString(dataHash[:])
parts := strings.Split(path, "/")
for _, part := range parts {
d := strings.Split(part, "#")
addonString := d[0]
newString := strDataHash + addonString
deleteStep, strconvErr := strconv.Atoi(d[1])
if strconvErr != nil {
log.Fatal("Hashing path is incorrect!")
}
strDataHash = D256(newString, deleteStep, 1).String
}
return &D_hash{
Byte_slice: []byte(strDataHash),
String: strDataHash,
}
}
func D512C(strData string, path string) *D_hash {
dataHash := sha512.Sum512([]byte(strData))
var strDataHash string = hex.EncodeToString(dataHash[:])
parts := strings.Split(path, "/")
for _, part := range parts {
d := strings.Split(part, "#")
addonString := d[0]
newString := strDataHash + addonString
deleteStep, strconvErr := strconv.Atoi(d[1])
if strconvErr != nil {
log.Fatal("Hashing path is incorrect!")
}
strDataHash = D512(newString, deleteStep, 1).String
}
return &D_hash{
Byte_slice: []byte(strDataHash),
String: strDataHash,
}
}