github.com/wangyougui/gf/v2@v2.6.5/crypto/gsha1/gsha1.go (about)

     1  // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
     2  //
     3  // This Source Code Form is subject to the terms of the MIT License.
     4  // If a copy of the MIT was not distributed with this file,
     5  // You can obtain one at https://github.com/wangyougui/gf.
     6  
     7  // Package gsha1 provides useful API for SHA1 encryption algorithms.
     8  package gsha1
     9  
    10  import (
    11  	"crypto/sha1"
    12  	"encoding/hex"
    13  	"io"
    14  	"os"
    15  
    16  	"github.com/wangyougui/gf/v2/errors/gerror"
    17  	"github.com/wangyougui/gf/v2/util/gconv"
    18  )
    19  
    20  // Encrypt encrypts any type of variable using SHA1 algorithms.
    21  // It uses package gconv to convert `v` to its bytes type.
    22  func Encrypt(v interface{}) string {
    23  	r := sha1.Sum(gconv.Bytes(v))
    24  	return hex.EncodeToString(r[:])
    25  }
    26  
    27  // EncryptFile encrypts file content of `path` using SHA1 algorithms.
    28  func EncryptFile(path string) (encrypt string, err error) {
    29  	f, err := os.Open(path)
    30  	if err != nil {
    31  		err = gerror.Wrapf(err, `os.Open failed for name "%s"`, path)
    32  		return "", err
    33  	}
    34  	defer f.Close()
    35  	h := sha1.New()
    36  	_, err = io.Copy(h, f)
    37  	if err != nil {
    38  		err = gerror.Wrap(err, `io.Copy failed`)
    39  		return "", err
    40  	}
    41  	return hex.EncodeToString(h.Sum(nil)), nil
    42  }
    43  
    44  // MustEncryptFile encrypts file content of `path` using SHA1 algorithms.
    45  // It panics if any error occurs.
    46  func MustEncryptFile(path string) string {
    47  	result, err := EncryptFile(path)
    48  	if err != nil {
    49  		panic(err)
    50  	}
    51  	return result
    52  }