aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorfusion32 <marcopuzziello@gmail.com>2025-08-15 14:53:56 -0300
committerfusion32 <marcopuzziello@gmail.com>2025-08-15 14:53:56 -0300
commit7ca3cfca6e683a318eedb907e4ba9c257d117b33 (patch)
treedd584a0f6732382b749ed26526fc3db0acc31931 /tools
parent20ca1cf66123c110cc14aa452a840e5f62cd74ff (diff)
downloadquerymanager-7ca3cfca6e683a318eedb907e4ba9c257d117b33.tar.gz
querymanager-7ca3cfca6e683a318eedb907e4ba9c257d117b33.zip
wrapping up for a public release
Diffstat (limited to 'tools')
-rw-r--r--tools/pwdhash.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/tools/pwdhash.go b/tools/pwdhash.go
new file mode 100644
index 0000000..e66f72f
--- /dev/null
+++ b/tools/pwdhash.go
@@ -0,0 +1,33 @@
+package main
+
+import (
+ "crypto/rand"
+ "crypto/sha256"
+ "encoding/hex"
+ "fmt"
+ "os"
+)
+
+func main() {
+ if len(os.Args) <= 1 {
+ fmt.Printf("usage: pwdhash PASSWORD\n")
+ return
+ }
+
+ fmt.Printf("password = \"%v\"\n", os.Args[1])
+
+ var salt [32]byte
+ if n, err := rand.Read(salt[:]); err != nil || n != 32 {
+ fmt.Printf("Failed to generate salt: %v\n", err)
+ }
+
+ secret := sha256.Sum256([]byte(os.Args[1]))
+ for i := 0; i < 32; i += 1 {
+ secret[i] ^= salt[i]
+ }
+
+ pwdhash := sha256.Sum256(secret[:])
+
+ fmt.Printf("pwdhash = %v\n", hex.EncodeToString(pwdhash[:]))
+ fmt.Printf("salt = %v\n", hex.EncodeToString(salt[:]))
+}