mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-04 21:02:27 +08:00
38 lines
810 B
Go
38 lines
810 B
Go
package cryptor
|
|
|
|
import "bytes"
|
|
|
|
func generateAesKey(key []byte, size int) []byte {
|
|
genKey := make([]byte, size)
|
|
copy(genKey, key)
|
|
for i := size; i < len(key); {
|
|
for j := 0; j < size && i < len(key); j, i = j+1, i+1 {
|
|
genKey[j] ^= key[i]
|
|
}
|
|
}
|
|
return genKey
|
|
}
|
|
|
|
func generateDesKey(key []byte) []byte {
|
|
genKey := make([]byte, 8)
|
|
copy(genKey, key)
|
|
for i := 8; i < len(key); {
|
|
for j := 0; j < 8 && i < len(key); j, i = j+1, i+1 {
|
|
genKey[j] ^= key[i]
|
|
}
|
|
}
|
|
return genKey
|
|
}
|
|
|
|
func pkcs7Padding(src []byte, blockSize int) []byte {
|
|
padding := blockSize - len(src)%blockSize
|
|
padText := bytes.Repeat([]byte{byte(padding)}, padding)
|
|
return append(src, padText...)
|
|
}
|
|
|
|
func pkcs7UnPadding(src []byte) []byte {
|
|
length := len(src)
|
|
unPadding := int(src[length-1])
|
|
return src[:(length - unPadding)]
|
|
}
|