26 Star 238 Fork 48

golang-module / dongle

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
hash.go 3.96 KB
一键复制 编辑 原始数据 按行查看 历史
package dongle
import (
"crypto/md5"
"crypto/sha1"
"crypto/sha256"
"crypto/sha512"
"gitee.com/golang-module/dongle/md2"
"golang.org/x/crypto/blake2b"
"golang.org/x/crypto/blake2s"
"golang.org/x/crypto/md4"
"golang.org/x/crypto/ripemd160"
"golang.org/x/crypto/sha3"
)
// ByMd2 encrypts by md2.
// 通过 md2 加密
func (e Encrypter) ByMd2() Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
h := md2.New()
h.Write(e.src)
e.dst = h.Sum(nil)
return e
}
// ByMd4 encrypts by md4.
// 通过 md4 加密
func (e Encrypter) ByMd4() Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
h := md4.New()
h.Write(e.src)
e.dst = h.Sum(nil)
return e
}
// ByMd5 encrypts by md5.
// 通过 md5 加密
func (e Encrypter) ByMd5() Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
dst := md5.Sum(e.src)
e.dst = dst[:]
return e
}
// BySha1 encrypts by sha1.
// 通过 sha1 加密
func (e Encrypter) BySha1() Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
dst := sha1.Sum(e.src)
e.dst = dst[:]
return e
}
// BySha3 encrypts by sha3.
// 通过 sha3 加密
func (e Encrypter) BySha3(size int) Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
switch size {
case 224:
dst := sha3.Sum224(e.src)
e.dst = dst[:]
case 256:
dst := sha3.Sum256(e.src)
e.dst = dst[:]
case 384:
dst := sha3.Sum384(e.src)
e.dst = dst[:]
case 512:
dst := sha3.Sum512(e.src)
e.dst = dst[:]
default:
e.Error = invalidHashSizeError()
}
return e
}
// BySha224 encrypts by sha224.
// 通过 sha224 加密
func (e Encrypter) BySha224() Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
dst := sha256.Sum224(e.src)
e.dst = dst[:]
return e
}
// BySha256 encrypts by sha256.
// 通过 sha256 加密
func (e Encrypter) BySha256() Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
dst := sha256.Sum256(e.src)
e.dst = dst[:]
return e
}
// BySha384 encrypts by sha384.
// 通过 sha384 加密
func (e Encrypter) BySha384() Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
dst := sha512.Sum384(e.src)
e.dst = dst[:]
return e
}
// BySha512 encrypts by sha512.
// 通过 sha512 加密
func (e Encrypter) BySha512(size ...int) Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
if len(size) == 0 {
dst := sha512.Sum512(e.src)
e.dst = dst[:]
return e
}
switch size[0] {
case 224:
dst := sha512.Sum512_224(e.src)
e.dst = dst[:]
case 256:
dst := sha512.Sum512_256(e.src)
e.dst = dst[:]
default:
e.Error = invalidHashSizeError()
}
return e
}
// ByShake128 encrypts by shake128.
// 通过 shake128 加密
func (e Encrypter) ByShake128(size int) Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
h := make([]byte, size/8)
sha3.ShakeSum128(h, e.src)
e.dst = h
return e
}
// ByShake256 encrypts by shake256.
// 通过 shake256 加密
func (e Encrypter) ByShake256(size int) Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
h := make([]byte, size/8)
sha3.ShakeSum256(h, e.src)
e.dst = h
return e
}
// ByRipemd160 encrypts by ripemd160.
// 通过 ripemd160 加密
func (e Encrypter) ByRipemd160() Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
h := ripemd160.New()
h.Write(e.src)
e.dst = h.Sum(nil)
return e
}
// ByBlake2b encrypts by blake2b.
// 通过 blake2b 加密
func (e Encrypter) ByBlake2b(size int) Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
switch size {
case 256:
dst := blake2b.Sum256(e.src)
e.dst = dst[:]
case 384:
dst := blake2b.Sum384(e.src)
e.dst = dst[:]
case 512:
dst := blake2b.Sum512(e.src)
e.dst = dst[:]
default:
e.Error = invalidHashSizeError()
}
return e
}
// ByBlake2s encrypts by blake2s.
// 通过 blake2s 加密
func (e Encrypter) ByBlake2s(size int) Encrypter {
if len(e.src) == 0 || e.Error != nil {
return e
}
switch size {
case 256:
dst := blake2s.Sum256(e.src)
e.dst = dst[:]
default:
e.Error = invalidHashSizeError()
}
return e
}
Go
1
https://gitee.com/golang-module/dongle.git
git@gitee.com:golang-module/dongle.git
golang-module
dongle
dongle
master

搜索帮助