1 Star 1 Fork 0

zhuyuns/basic

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
mode.go 1.57 KB
一键复制 编辑 原始数据 按行查看 历史
wing 提交于 2021-12-18 11:42 . 添加基础包
package rsa
import (
"crypto"
"crypto/rand"
"crypto/rsa"
"errors"
)
type CipherMode interface {
Encrypt(plainText []byte, puk *rsa.PublicKey) ([]byte, error)
Decrypt(cipherText []byte, prk *rsa.PrivateKey) ([]byte, error)
}
type cipherMode int64
type pkcs1v15Cipher cipherMode
func NewPKCS1v15Cipher() CipherMode {
return new(pkcs1v15Cipher)
}
func (pkcs1v15 *pkcs1v15Cipher) Encrypt(plainText []byte, puk *rsa.PublicKey) ([]byte, error) {
return rsa.EncryptPKCS1v15(rand.Reader, puk, plainText)
}
func (pkcs1v15 *pkcs1v15Cipher) Decrypt(cipherText []byte, prk *rsa.PrivateKey) ([]byte, error) {
return rsa.DecryptPKCS1v15(rand.Reader, prk, cipherText)
}
type SignMode interface {
Sign(src []byte, hash crypto.Hash, prk *rsa.PrivateKey) ([]byte, error)
Verify(src []byte, sign []byte, hash crypto.Hash, puk *rsa.PublicKey) error
}
type signMode int64
type pkcs1v15Sign signMode
func NewPKCS1v15Sign() SignMode {
return new(pkcs1v15Sign)
}
func (pkcs1v15 *pkcs1v15Sign) Sign(src []byte, hash crypto.Hash, prk *rsa.PrivateKey) ([]byte, error) {
if !hash.Available() {
return nil, errors.New("unsupport hash type")
}
h := hash.New()
h.Write(src)
hashed := h.Sum(nil)
return rsa.SignPKCS1v15(rand.Reader, prk, hash, hashed)
}
func (pkcs1v15 *pkcs1v15Sign) Verify(src []byte, sign []byte, hash crypto.Hash, puk *rsa.PublicKey) error {
if !hash.Available() {
return errors.New("unsupport hash type")
}
h := hash.New()
h.Write(src)
hashed := h.Sum(nil)
return rsa.VerifyPKCS1v15(puk, hash, hashed, sign)
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/zhuyuns/basic.git
git@gitee.com:zhuyuns/basic.git
zhuyuns
basic
basic
v0.0.17

搜索帮助