Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package server
- import (
- "fmt"
- "http"
- "crypto/rand"
- "crypto/aes"
- "crypto/cipher"
- "strings"
- )
- func init() {
- http.HandleFunc("/", handler)
- http.HandleFunc("/genkey/aes256", generateKey)
- }
- func handler(w http.ResponseWriter, r *http.Request) {
- fmt.Fprint(w, "Hello, world!")
- }
- func generateKey(w http.ResponseWriter, r *http.Request) {
- key := make([]byte, 32)
- n, err := rand.Read(key)
- err = err
- if(err != nil) {
- fmt.Fprint(w, err)
- return
- }
- if(n != 32) {
- fmt.Fprint(w, "Not enough bytes read.")
- return
- }
- c, err := aes.NewCipher(key)
- if(err != nil) {
- fmt.Fprint(w, err)
- }
- iv := make([]byte, 32)
- n, err = rand.Read(iv)
- err = err
- if(err != nil) {
- fmt.Fprint(w, err)
- return
- }
- if(n != 32) {
- fmt.Fprint(w, "Not enough bytes read.")
- return
- }
- sEnc := cipher.NewCFBEncrypter(c, iv)
- msg := "text to be encrypted"
- msgR := strings.NewReader(msg)
- msgB := make([]byte, msgR.Len())
- n, err = msgR.Read(msgB)
- if(err != nil) {
- fmt.Fprint(w, err)
- return
- }
- if(n == 0) {
- fmt.Fprint(w, "No bytes read.")
- return
- }
- fmt.Fprint(w, msgB)
- fmt.Fprint(w, "<br>")
- sEnc.XORKeyStream(msgB, msgB)
- fmt.Fprint(w, msgB)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement