otp generation and encryption added with go
This commit is contained in:
51
Go/otp_encrypt/otp_encrypt.go
Normal file
51
Go/otp_encrypt/otp_encrypt.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package otpencrypt
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"one-time-pad-utils/pad_definitions"
|
||||
)
|
||||
|
||||
func OTPEncrypt(message string, key string) string {
|
||||
message = strings.Replace(message, " ", "", -1)
|
||||
messagesplit := strings.Split(message,"")
|
||||
var messagesplitint []int
|
||||
|
||||
key = strings.Replace(key, " ", "", -1)
|
||||
keysplit := strings.Split(key,"")
|
||||
var keysplitint []int
|
||||
|
||||
for _, char := range messagesplit {
|
||||
for n, c := range paddefinitions.NumToCharMap{
|
||||
if c == strings.ToUpper(char) {
|
||||
messagesplitint = append(messagesplitint, n)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, char := range keysplit {
|
||||
for n, c := range paddefinitions.NumToCharMap{
|
||||
if c == strings.ToUpper(char) {
|
||||
keysplitint = append(keysplitint, n)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(keysplitint) < len(messagesplitint) {
|
||||
return ("KEY TOO SHORT TO ENCRYPT MESSAGE")
|
||||
}
|
||||
|
||||
var encryptedmessage []string
|
||||
|
||||
for pos, messagenum := range messagesplitint{
|
||||
encryptedmessage = append(encryptedmessage, paddefinitions.NumToCharMap[(messagenum + keysplitint[pos]) % 35])
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return (strings.Join(encryptedmessage, ""))
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user