-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
65 lines (42 loc) · 1.27 KB
/
main.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
package main
import (
"crypto/sha256"
"fmt"
"io/ioutil"
"os"
myRSA "github.com/tangingw/rsacrypto"
)
func readEncrypredFile(filename string) []byte {
content, err := ioutil.ReadFile(filename)
if err != nil {
fmt.Printf("file: %s not found!\n", filename)
os.Exit(1)
}
return content
}
func main() {
if _, err := os.Stat("private.pem"); os.IsNotExist(err) {
bitLength := 4096
keyPair := myRSA.GenerateRSAKey(bitLength)
myRSA.SavePublicPEMKey("public.pem", keyPair.PublicKey)
myRSA.SavePEMKey("private.pem", keyPair.PrivateKey)
}
key := myRSA.RetrievePEMKey("private.pem")
pubKey := myRSA.RetrievePEMPubKey("public.pem")
keyPair := &myRSA.RSAKeyPair{pubKey, key}
if _, err := os.Stat("encrypted_data.txt"); err == nil {
decrypted := readEncrypredFile("encrypted_data.txt")
decryptMessage := keyPair.DecryptOAEP(sha256.New(), decrypted, nil)
fmt.Println(string(decryptMessage))
serverMsg := []byte("I got your message!")
encrypted := keyPair.EncryptOAEP(sha256.New(), serverMsg, nil)
err := ioutil.WriteFile("server_message.txt", encrypted, 0644)
if err != nil {
panic(err)
}
} else if os.IsNotExist(err) {
fmt.Println("We don't receive your message")
} else if os.IsExist(err) {
fmt.Println("Something must be wrong!")
}
}