This is what I have in Node.js:
var crypto = require('crypto')
function encryptstring(str) {
var cipher = crypto.createCipheriv('aes-256-cbc', 'NFd6N3v1nbL47FK0xpZjxZ7NY4fYpNYd', 'TestingIV1234567'),
encrypted = cipher.update(str, 'utf-8', 'base64');
encrypted += cipher.final('base64');
return encrypted;
}
console.log(encryptstring("Testing 111111111111111111111111111111111111111111"))
That returns: w2f0vBP2hRfgVqssqOluk68Qxkc9LXFESc0ZGzPBq3p6f/x/LbwBbg1XOoRr7I/DAtESJGdweKG6nL9m8RfewA==
This is what I have in Go:
package main
import (
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"fmt"
)
// decrypt from base64 to decrypted string
func decrypt(key []byte, iv []byte, cryptoText string) string {
ciphertext, _ := base64.URLEncoding.DecodeString(cryptoText)
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
if len(ciphertext) < aes.BlockSize {
panic("ciphertext too short")
}
ciphertext = ciphertext[aes.BlockSize:]
stream := cipher.NewCFBDecrypter(block, iv)
stream.XORKeyStream(ciphertext, ciphertext)
return fmt.Sprintf("%s", ciphertext)
}
func main() {
encKey := "NFd6N3v1nbL47FK0xpZjxZ7NY4fYpNYd"
iv := "TestingIV1234567"
stringtodecrypt := "w2f0vBP2hRfgVqssqOluk68Qxkc9LXFESc0ZGzPBq3p6f/x/LbwBbg1XOoRr7I/DAtESJGdweKG6nL9m8RfewA=="
stringtodecrypt = decrypt([]byte(encKey), []byte(iv), stringtodecrypt)
fmt.Println(string(stringtodecrypt))
}
That ends up returning _▒▒▒6▒▒d,O▒ob"▒
A lot of the Go code was taken from https://gist.github.com/manishtpatel/8222606
I tried this as well: How do I decrypt an AES256 bit cipher in golang that was encrypted in nodejs? (with some modifications as hex.DecodeString
was not necessary in this case) but it would throw an error saying panic: crypto/cipher: input not full blocks
This was my code when I tried that:
func main() {
encKey := "NFd6N3v1nbL47FK0xpZjxZ7NY4fYpNYd"
iv := "TestingIV1234567"
stringtodecrypt := "w2f0vBP2hRfgVqssqOluk68Qxkc9LXFESc0ZGzPBq3p6f/x/LbwBbg1XOoRr7I/DAtESJGdweKG6nL9m8RfewA=="
block, err := aes.NewCipher([]byte(encKey))
if err != nil {
panic(err)
}
mode := cipher.NewCBCDecrypter(block, []byte(iv))
mode.CryptBlocks([]byte(stringtodecrypt), []byte(stringtodecrypt))
fmt.Println(string(stringtodecrypt))
}
I've searched around a lot and I can't seem to figure this out.
What am I doing wrong?