Like Christian said, your main problem is how Javascript and how Go iterate.

In your Javascript example, you use: 

for(var i=0;i<input.length;i++){

so you iterate in a +1 increment regardless of any type of characters. When 
you range over a Go string, you will see the iterator jumping 1,2 or 3 
positions depending on the type of rune.

Your modulo calculation index % len(key) will match for ascii (e.g. English 
characters), but will different after the first non-ascii characters

So you should explore something like this: 
https://play.golang.org/p/23nMX2dFhJF


On Sunday, 20 January 2019 10:14:05 UTC-5, Soorya Prakash wrote:
>
>
> I am using the below code to encrypt and decrypt the data. Now I want to 
> encrypt the data from Node JS and want to decrypt the data from Go lang. 
> But I am not able to achieve it using GO lang.
>
> var B64XorCipher = {
>   encode: function(key, data) {
>     return new Buffer(xorStrings(key, data),'utf8').toString('base64');
>   },
>   decode: function(key, data) {
>     data = new Buffer(data,'base64').toString('utf8');
>     return xorStrings(key, data);
>   }};
> function xorStrings(key,input){
>   var output='';
>   for(var i=0;i<input.length;i++){
>     var c = input.charCodeAt(i);
>     var k = key.charCodeAt(i%key.length);
>     output += String.fromCharCode(c ^ k);
>   }
>   return output;}
>
> From go I am trying to decode like below I am not able to achieve it.
>
> bytes, err := base64.StdEncoding.DecodeString(actualInput)
> encryptedText := string(bytes)
> fmt.Println(EncryptDecrypt(encryptedText, "XXXXXX"))
>
> func EncryptDecrypt(input, key string) (output string) {
>     for i := range input {
>         output += string(input[i] ^ key[i%len(key)])
>     }
>
>     return output}
>
> Can someone help me to resolve it.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to