-
Notifications
You must be signed in to change notification settings - Fork 22
/
rsa_encryption.go
99 lines (73 loc) · 2.03 KB
/
rsa_encryption.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package rsa
import (
"errors"
"crypto/rsa"
"crypto/rand"
"github.com/deatil/go-cryptobin/tool"
)
// 公钥加密
func (this Rsa) Encrypt() Rsa {
if this.publicKey == nil {
this.Error = errors.New("publicKey error.")
return this
}
this.paredData, this.Error = pubKeyByte(this.publicKey, this.data, true)
return this
}
// 私钥解密
func (this Rsa) Decrypt() Rsa {
if this.privateKey == nil {
this.Error = errors.New("privateKey error.")
return this
}
this.paredData, this.Error = priKeyByte(this.privateKey, this.data, false)
return this
}
// ====================
// 私钥加密
func (this Rsa) PriKeyEncrypt() Rsa {
if this.privateKey == nil {
this.Error = errors.New("privateKey error.")
return this
}
this.paredData, this.Error = priKeyByte(this.privateKey, this.data, true)
return this
}
// 公钥解密
func (this Rsa) PubKeyDecrypt() Rsa {
if this.publicKey == nil {
this.Error = errors.New("publicKey error.")
return this
}
this.paredData, this.Error = pubKeyByte(this.publicKey, this.data, false)
return this
}
// ====================
// OAEP公钥加密
func (this Rsa) EncryptOAEP(typ ...string) Rsa {
if this.publicKey == nil {
this.Error = errors.New("publicKey error.")
return this
}
hashType := "SHA1"
if len(typ) > 0 {
hashType = typ[0]
}
newHash := tool.NewHash().GetHash(hashType)
this.paredData, this.Error = rsa.EncryptOAEP(newHash(), rand.Reader, this.publicKey, this.data, nil)
return this
}
// OAEP私钥解密
func (this Rsa) DecryptOAEP(typ ...string) Rsa {
if this.privateKey == nil {
this.Error = errors.New("privateKey error.")
return this
}
hashType := "SHA1"
if len(typ) > 0 {
hashType = typ[0]
}
newHash := tool.NewHash().GetHash(hashType)
this.paredData, this.Error = rsa.DecryptOAEP(newHash(), rand.Reader, this.privateKey, this.data, nil)
return this
}