Files
dice-one-time-pad/Go/main.go

50 lines
1.5 KiB
Go

package main
import (
otpdecrypt "dotp/otp_decrypt"
otpencrypt "dotp/otp_encrypt"
otpgenerate "dotp/otp_generate"
"flag"
"fmt"
"math"
"strings"
)
func main() {
var genpad = flag.Bool("generate", false, "Generate a new One-Time Pad using CSPRNG")
var genpadchunks = flag.Int("chunks", 200, "Specify the amount of chunks to generate")
var encryptmessage = flag.String("encrypt", "", "Specify a message you wish to encrypt (use quotes if you have spaces)")
var decryptmessage = flag.String("decrypt", "", "Specify a message you wish to decrypt (use quotes if you have spaces)")
var otpkey = flag.String("key", "", "The specify a key for encryption (optional) and decryption (required) (use quotes if you have spaces)")
flag.Parse()
if *genpad {
fmt.Printf("%v\n", otpgenerate.GenerateOTP(*genpadchunks))
return
}
if *encryptmessage != "" {
if *otpkey != "" {
fmt.Printf("%v\n", otpencrypt.OTPEncrypt(*encryptmessage, *otpkey))
} else {
encryptmessagestring := strings.Replace(*encryptmessage, " ", "", -1)
lenofmessage := math.Ceil(float64(len(encryptmessagestring)) / float64(5))
generated_key := otpgenerate.GenerateOTP(int(lenofmessage))
fmt.Printf("GENERATED NEW KEY SINCE NONE WAS SPECIFIED:\n%v\n\n%v\n", generated_key, otpencrypt.OTPEncrypt(*encryptmessage, generated_key))
}
return
}
if *decryptmessage != "" {
if *otpkey != "" {
fmt.Printf("%v\n", otpdecrypt.OTPDecrypt(*decryptmessage, *otpkey))
} else {
fmt.Println("PLEASE SUPPLY A KEY")
}
return
}
flag.PrintDefaults()
}