初次提交
This commit is contained in:
+20
@@ -0,0 +1,20 @@
|
||||
package aes
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/aes"
|
||||
"crypto/cipher"
|
||||
)
|
||||
|
||||
func AesCfbNewEncrypSteam() cipher.Stream {
|
||||
block, _ := aes.NewCipher(Key)
|
||||
iv := bytes.Repeat([]byte("1"), block.BlockSize())
|
||||
|
||||
return cipher.NewCFBEncrypter(block, iv)
|
||||
}
|
||||
func AesCfbNewDecrypSteam() cipher.Stream {
|
||||
block, _ := aes.NewCipher(Key)
|
||||
iv := bytes.Repeat([]byte("1"), block.BlockSize())
|
||||
|
||||
return cipher.NewCFBDecrypter(block, iv)
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
package aes
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/aes"
|
||||
"crypto/cipher"
|
||||
"crypto/md5"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
var Key []byte
|
||||
|
||||
func AesCtrEncrypt(dst, plainText []byte) []byte {
|
||||
//1. 创建cipher.Block接口
|
||||
block, _ := aes.NewCipher(Key)
|
||||
|
||||
//2. 创建分组模式,在crypto/cipher包中
|
||||
iv := bytes.Repeat([]byte("1"), block.BlockSize())
|
||||
stream := cipher.NewCTR(block, iv)
|
||||
//3. 加密
|
||||
|
||||
stream.XORKeyStream(dst, plainText)
|
||||
|
||||
return dst
|
||||
}
|
||||
|
||||
func AesCtrDecrypt(encryptData []byte) []byte {
|
||||
data := make([]byte, len(encryptData))
|
||||
return AesCtrEncrypt(data, encryptData)
|
||||
}
|
||||
|
||||
const hextable = "0123456789abcdef"
|
||||
|
||||
func MD5_B(str string) []byte {
|
||||
dst := make([]byte, 32)
|
||||
for k, v := range md5.Sum(Str2bytes(str)) {
|
||||
dst[k*2] = hextable[v>>4]
|
||||
dst[k*2+1] = hextable[v&0x0f]
|
||||
}
|
||||
return dst
|
||||
}
|
||||
func Str2bytes(s string) []byte {
|
||||
x := (*[2]uintptr)(unsafe.Pointer(&s))
|
||||
h := [3]uintptr{x[0], x[1], x[1]}
|
||||
return *(*[]byte)(unsafe.Pointer(&h))
|
||||
}
|
||||
Reference in New Issue
Block a user