53 lines
1008 B
Go

package main
import (
"crypto/rand"
"encoding/base64"
"encoding/hex"
"fmt"
"os"
"strconv"
"strings"
)
var version = "v1.0.0"
var help = "salt [size=16]"
func main() {
if len(os.Args) > 1 {
switch os.Args[1] {
case "-V", "version", "-version", "--version":
fmt.Println(version)
return
case "help", "-help", "--help":
fmt.Println("Usage:", help)
os.Exit(0)
return
}
}
var err error
var size int
switch len(os.Args) {
case 1:
size = 16
case 2:
size, err = strconv.Atoi(os.Args[1])
if err != nil {
fmt.Fprintf(os.Stderr, "Usage: %s\n", help)
return
}
default:
fmt.Fprintf(os.Stderr, "Usage: %s\n", help)
return
}
salt := make([]byte, size)
_, _ = rand.Read(salt)
fmt.Printf("hex : %s\n", hex.EncodeToString(salt))
fmt.Printf("HEX : %s\n", strings.ToUpper(hex.EncodeToString(salt)))
fmt.Printf("url-base64: %s\n", base64.RawURLEncoding.EncodeToString(salt))
fmt.Printf("rfc-base64: %s\n", base64.StdEncoding.EncodeToString(salt))
}