package back import ( "crypto/rand" "crypto/sha256" "encoding/base64" "encoding/hex" "time" ) // GenerateBytes генерирует рандомный массив байтов из n элементов func GenerateBytes(n int) ([]byte, error) { b := make([]byte, n) _, err := rand.Read(b) if err != nil { return nil, err } return b, nil } // GenerateString генерирует рандомную строку из n символов func GenerateString(n int) (string, error) { b, err := GenerateBytes(n) return base64.URLEncoding.EncodeToString(b), err } // GenerateHash генерирует 256 битный хэш func GenerateHash(value string) (string, error) { str, err := GenerateString(16) if err != nil { return "", err } hash := sha256.New() _, err = hash.Write([]byte(time.Now().String() + str + value)) if err != nil { return "", err } return hex.EncodeToString(hash.Sum(nil)), nil } func getDate(dbFormat string) string { if len(dbFormat) < 19 { if len(dbFormat) < 10 { return "?дата?" } return dbFormat[8:10] + month[dbFormat[5:7]] + dbFormat[0:4] } return (dbFormat[8:10] + month[dbFormat[5:7]] + dbFormat[0:4] + " " + dbFormat[11:19]) }