1 Star 0 Fork 0

Hundred.Lee / openssl

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ecb.go 1.92 KB
一键复制 编辑 原始数据 按行查看 历史
Hundred.Lee 提交于 2020-09-17 15:47 . first commit
package openssl
import (
"crypto/cipher"
)
func ECBEncrypt(block cipher.Block, src []byte, padding string) ([]byte, error) {
blockSize := block.BlockSize()
src = Padding(padding, src, blockSize)
encryptData := make([]byte, len(src))
ecb := NewECBEncrypter(block)
ecb.CryptBlocks(encryptData, src)
return encryptData, nil
}
func ECBDecrypt(block cipher.Block, src []byte, padding string) ([]byte, error) {
dst := make([]byte, len(src))
mode := NewECBDecrypter(block)
mode.CryptBlocks(dst, src)
dst = UnPadding(padding, dst)
return dst, nil
}
type ecb struct {
b cipher.Block
blockSize int
}
func newECB(b cipher.Block) *ecb {
return &ecb{
b: b,
blockSize: b.BlockSize(),
}
}
type ecbEncrypter ecb
// NewECBEncrypter returns a BlockMode which encrypts in electronic code book
// mode, using the given Block.
func NewECBEncrypter(b cipher.Block) cipher.BlockMode {
return (*ecbEncrypter)(newECB(b))
}
func (x *ecbEncrypter) BlockSize() int { return x.blockSize }
func (x *ecbEncrypter) CryptBlocks(dst, src []byte) {
if len(src)%x.blockSize != 0 {
panic("crypto/cipher: input not full blocks")
}
if len(dst) < len(src) {
panic("crypto/cipher: output smaller than input")
}
for len(src) > 0 {
x.b.Encrypt(dst, src[:x.blockSize])
src = src[x.blockSize:]
dst = dst[x.blockSize:]
}
}
type ecbDecrypter ecb
// NewECBDecrypter returns a BlockMode which decrypts in electronic code book
// mode, using the given Block.
func NewECBDecrypter(b cipher.Block) cipher.BlockMode {
return (*ecbDecrypter)(newECB(b))
}
func (x *ecbDecrypter) BlockSize() int { return x.blockSize }
func (x *ecbDecrypter) CryptBlocks(dst, src []byte) {
if len(src)%x.blockSize != 0 {
panic("crypto/cipher: input not full blocks")
}
if len(dst) < len(src) {
panic("crypto/cipher: output smaller than input")
}
for len(src) > 0 {
x.b.Decrypt(dst, src[:x.blockSize])
src = src[x.blockSize:]
dst = dst[x.blockSize:]
}
}
1
https://gitee.com/hundredlee/openssl.git
git@gitee.com:hundredlee/openssl.git
hundredlee
openssl
openssl
964a66695895

搜索帮助