MCPcopy
hub / github.com/go-sql-driver/mysql / scramblePassword

Function scramblePassword

auth.go:163–190  ·  view source on GitHub ↗

Hash password using 4.1+ method (SHA1)

(scramble []byte, password string)

Source from the content-addressed store, hash-verified

161
162// Hash password using 4.1+ method (SHA1)
163func scramblePassword(scramble []byte, password string) []byte {
164 if len(password) == 0 {
165 return nil
166 }
167
168 // stage1Hash = SHA1(password)
169 crypt := sha1.New()
170 crypt.Write([]byte(password))
171 stage1 := crypt.Sum(nil)
172
173 // scrambleHash = SHA1(scramble + SHA1(stage1Hash))
174 // inner Hash
175 crypt.Reset()
176 crypt.Write(stage1)
177 hash := crypt.Sum(nil)
178
179 // outer Hash
180 crypt.Reset()
181 crypt.Write(scramble)
182 crypt.Write(hash)
183 scramble = crypt.Sum(nil)
184
185 // token = scrambleHash XOR stage1Hash
186 for i := range scramble {
187 scramble[i] ^= stage1[i]
188 }
189 return scramble
190}
191
192// Hash password using MySQL 8+ method (SHA256)
193func scrambleSHA256Password(scramble []byte, password string) []byte {

Callers 1

authMethod · 0.85

Calls 1

WriteMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…