github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/secret/token.go (about)

     1  package secret
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"hash/crc32"
     7  )
     8  
     9  const minTokenLength = 16
    10  
    11  func Token(token string) string {
    12  	var mask bytes.Buffer
    13  	if len(token) > minTokenLength {
    14  		mask.WriteString(token[:4])
    15  		mask.WriteString("****")
    16  		mask.WriteString(token[len(token)-4:])
    17  	} else {
    18  		mask.WriteString("****")
    19  	}
    20  	mask.WriteString(fmt.Sprintf("(CRC-32c: %08X)", crc32.Checksum([]byte(token), crc32.IEEETable)))
    21  
    22  	return mask.String()
    23  }