mirror of
				https://github.com/therootcompany/golib.git
				synced 2025-10-31 13:12:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			1008 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			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))
 | |
| }
 |