Advertisement
Guest User

Untitled

a guest
Aug 15th, 2011
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.22 KB | None | 0 0
  1. package server
  2.  
  3. import (
  4.     "fmt"
  5.     "http"
  6.     "crypto/rand"
  7.     "crypto/aes"
  8.     "crypto/cipher"
  9.     "strings"
  10. )
  11.  
  12. func init() {
  13.     http.HandleFunc("/", handler)
  14.     http.HandleFunc("/genkey/aes256", generateKey)
  15. }
  16.  
  17. func handler(w http.ResponseWriter, r *http.Request) {
  18.     fmt.Fprint(w, "Hello, world!")
  19. }
  20.  
  21. func generateKey(w http.ResponseWriter, r *http.Request) {
  22.     key := make([]byte, 32)
  23.     n, err := rand.Read(key)
  24.     err = err
  25.     if(err != nil) {
  26.         fmt.Fprint(w, err)
  27.         return
  28.     }
  29.     if(n != 32) {
  30.         fmt.Fprint(w, "Not enough bytes read.")
  31.         return
  32.     }
  33.     c, err := aes.NewCipher(key)
  34.     if(err != nil) {
  35.         fmt.Fprint(w, err)
  36.     }
  37.    
  38.     iv := make([]byte, 32)
  39.     n, err = rand.Read(iv)
  40.     err = err
  41.     if(err != nil) {
  42.         fmt.Fprint(w, err)
  43.         return
  44.     }
  45.     if(n != 32) {
  46.         fmt.Fprint(w, "Not enough bytes read.")
  47.         return
  48.     }
  49.    
  50.     sEnc := cipher.NewCFBEncrypter(c, iv)
  51.    
  52.     msg := "text to be encrypted"
  53.     msgR := strings.NewReader(msg)
  54.     msgB := make([]byte, msgR.Len())
  55.     n, err = msgR.Read(msgB)
  56.     if(err != nil) {
  57.         fmt.Fprint(w, err)
  58.         return
  59.     }
  60.     if(n == 0) {
  61.         fmt.Fprint(w, "No bytes read.")
  62.         return
  63.     }
  64.     fmt.Fprint(w, msgB)
  65.     fmt.Fprint(w, "<br>")
  66.     sEnc.XORKeyStream(msgB, msgB)
  67.     fmt.Fprint(w, msgB)
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement