func getSaltExample(secret, sa []byte, iter int, f func() hash.Hash, size int) ([]byte, error) {
	mySalt, err := salt.NewSalt(secret, minSecretLen, maxSecretLen, sa)
	if err != nil {
		return nil, err
	}
	mySalt.Iterations = iter
	mySalt.OutputLen = size
	mySalt.Digest = f
	return mySalt.Generate(minSecretLen, maxSecretLen)
}
func getRandomSaltExample(secret []byte, saltLen int, iter int, f func() hash.Hash, size int) ([]byte, []byte, error) {
	salting, _ := salt.GetRandomSalt(saltLen)
	mySalt, err := salt.NewSalt(secret, minSecretLen, maxSecretLen, salting)
	if err != nil {
		return nil, nil, err
	}
	mySalt.Iterations = iter
	mySalt.OutputLen = size
	mySalt.Digest = f
	res, err := mySalt.Generate(minSecretLen, maxSecretLen)
	if err != nil {
		return nil, nil, err
	} else {
		return res, salting, nil
	}
}
// This example shows how to generate a randomly salted secret contain 8 characters, using hash function of md5 and 3 iterations of calculations
func ExampleGetRandomSalt() {
	iter := 3
	f := md5.New
	size := 8
	saltLen := 32

	randSalt, _ := salt.GetRandomSalt(saltLen)
	mySalt, err := salt.NewSalt(BasicSecret, minSecretLen, maxSecretLen, randSalt)
	if err != nil {
		fmt.Println("Error while creating new salt structure:", err)
	}
	mySalt.Iterations = iter
	mySalt.OutputLen = size
	mySalt.Digest = f
	res, err := mySalt.Generate(minSecretLen, maxSecretLen)
	if err != nil {
		fmt.Println("GetRandomSaltExample failed, error:", err)
	} else {
		fmt.Println("* Salted password of secret key:", string(BasicSecret), ",random salt length:", saltLen, randSalt,
			"with", iter, "iterations, output password length:", size, "bytes and MD5 function is:", res)
	}
}