This section seems wrong:
//The next 2 lines are for parsing the short, equivalent(?) to struct.unpack('h', byte)
i <<= 8;
i += file.ReadByte();
you're shifting the value in i
8 bits left and then reading another byte. I'm guessing because the original code read it in 2 bytes at a time. If your file isn't the right length then this will break it here. what about:
i <<= 8;
int secondByte = file.ReadByte()
if(secondByte != -1)
{
i += secondByte ;
}
Whats with this? It is casting an int to a byte to a char and it is truncating.
byte b = (byte)i;
char c = (char)b;
so you're better off ignoring the first byte and instead everything after tick = !tick;
could be:
i = file.ReadByte();
char c = (char)(i ^ (key & 255));
builder.Append(c);
In Python chr()
will throw an exception if the value is greater than 255 anyway.
And IMHO it is a bad idea to roll your own encryption/decryption like this. Use a trusted known solution solution instead.
Question: I only want to know if I have translated the function correctly to C# so it does the same as in Python
Answer Its more of a transliteration rather than a translation but they should give the same output. If I were to re-write the python into c# it would look different as it seems inefficient to me.
This section seems wrong:
//The next 2 lines are for parsing the short, equivalent(?) to struct.unpack('h', byte)
i <<= 8;
i += file.ReadByte();
you're shifting the value in i
8 bits left and then reading another byte. I'm guessing because the original code read it in 2 bytes at a time. If your file isn't the right length then this will break it here. what about:
i <<= 8;
int secondByte = file.ReadByte()
if(secondByte != -1)
{
i += secondByte ;
}
Whats with this? It is casting an int to a byte to a char and it is truncating.
byte b = (byte)i;
char c = (char)b;
so you're better off ignoring the first byte and instead everything after tick = !tick;
could be:
i = file.ReadByte();
char c = (char)(i ^ (key & 255));
builder.Append(c);
In Python chr()
will throw an exception if the value is greater than 255 anyway.
And IMHO it is a bad idea to roll your own encryption/decryption like this. Use a trusted known solution instead.
Question: I only want to know if I have translated the function correctly to C# so it does the same as in Python
Answer Its more of a transliteration rather than a translation but they should give the same output. If I were to re-write the python into c# it would look different as it seems inefficient to me.
This section seems wrong:
//The next 2 lines are for parsing the short, equivalent(?) to struct.unpack('h', byte)
i <<= 8;
i += file.ReadByte();
you're shifting the value in i
8 bits left and then reading another byte. I'm guessing because the original code read it in 2 bytes at a time. If your file isn't the right length then this will break it here. what about:
i <<= 8;
int secondByte = file.ReadByte()
if(secondByte != -1)
{
i += secondByte ;
}
Whats with this? It is casting an int to a byte to a char and it is truncating.
byte b = (byte)i;
char c = (char)b;
so you're better off ignoring the first byte and instead everything after tick = !tick;
could be:
i = file.ReadByte();
char c = (char)(i ^ (key & 255));
builder.Append(c);
In Python chr()
will throw an exception if the value is greater than 255 anyway.
And IMHO it is a bad idea to roll your own encryption/decryption like this. Use a trusted known solution instead.
Question: I only want to know if I have translated the function correctly to C# so it does the same as in Python
Answer Its more of a transliteration rather than a translation but they should give the same output. If I were to re-write the python into c# it would look different as it seems inefficient to me.
This section seems wrong:
//The next 2 lines are for parsing the short, equivalent(?) to struct.unpack('h', byte)
i <<= 8;
i += file.ReadByte();
you're shifting the value in i
8 bits left and then reading another byte. I'm guessing because the original code read it in 2 bytes at a time. If your file isn't the right length then this will break it here. what about:
i <<= 8;
int secondByte = file.ReadByte()
if(secondByte != -1)
{
i += secondByte ;
}
Whats with this? It is casting an int to a byte to a char and it is truncating.
byte b = (byte)i;
char c = (char)b;
so you're better off ignoring the first byte and instead everything after tick = !tick;
could be:
i = file.ReadByte();
char c = (char)(i ^ (key & 255));
builder.Append(c);
In Python chr()
will throw an exception if the value is greater than 255 anyway.
And IMHO it is a bad idea to roll your own encryption/decryption like this. Use a trusted known solution instead.
Question: I only want to know if I have translated the function correctly to C# so it does the same as in Python
Answer Its more of a transliteration rather than a translation but they should give the same output. If I were to re-write the python into c# it would look different as it seems inefficient to me.
This section seems wrong:
//The next 2 lines are for parsing the short, equivalent(?) to struct.unpack('h', byte)
i <<= 8;
i += file.ReadByte();
you're shifting the value in i
8 bits left and then reading another byte. I'm guessing because the original code read it in 2 bytes at a time. If your file isn't the right length then this will break it here. what about:
i <<= 8;
int secondByte = file.ReadByte()
if(secondByte != -1)
{
i += secondByte ;
}
Whats with this? It is casting an int to a byte to a char and it is truncating.
byte b = (byte)i;
char c = (char)b;
so you're better off ignoring the first byte and instead everything after tick = !tick;
could be:
i = file.ReadByte();
char c = (char)(i ^ (key & 255));
builder.Append(c);
In Python chr()
will throw an exception if the value is greater than 255 anyway.
And IMHO it is a bad idea to roll your own encryption/decryption like this. Use a trusted known solution instead.
Question: I only want to know if I have translated the function correctly to C# so it does the same as in Python
Answer Its more of a transliteration rather than a translation. If I were to re-write the python into c# it would look different.
This section seems wrong:
//The next 2 lines are for parsing the short, equivalent(?) to struct.unpack('h', byte)
i <<= 8;
i += file.ReadByte();
you're shifting the value in i
8 bits left and then reading another byte. I'm guessing because the original code read it in 2 bytes at a time. If your file isn't the right length then this will break it here. what about:
i <<= 8;
int secondByte = file.ReadByte()
if(secondByte != -1)
{
i += secondByte ;
}
Whats with this? It is casting an int to a byte to a char and it is truncating.
byte b = (byte)i;
char c = (char)b;
so you're better off ignoring the first byte and instead everything after tick = !tick;
could be:
i = file.ReadByte();
char c = (char)(i ^ (key & 255));
builder.Append(c);
In Python chr()
will throw an exception if the value is greater than 255 anyway.
And IMHO it is a bad idea to roll your own encryption/decryption like this. Use a trusted known solution instead.
Question: I only want to know if I have translated the function correctly to C# so it does the same as in Python
Answer Its more of a transliteration rather than a translation but they should give the same output. If I were to re-write the python into c# it would look different as it seems inefficient to me.
This section seems wrong:
//The next 2 lines are for parsing the short, equivalent(?) to struct.unpack('h', byte)
i <<= 8;
i += file.ReadByte();
you're shifting the value in i
8 bits left and then reading another byte. I'm guessing because the original code read it in 2 bytes at a time. If your file isn't the right length then this will break it here. what about:
i <<= 8;
int secondByte = file.ReadByte()
if(secondByte != -1)
{
i += secondByte ;
}
Whats with this? It is casting an int to a byte to a char and it is truncating.
byte b = (byte)i;
char c = (char)b;
so you're better off ignoring the first byte and instead everything after tick = !tick;
could be:
i = file.ReadByte();
char c = (char)(i ^ (key & 255));
builder.Append(c);
In Python chr()
will throw an exception if the value is greater than 255 anyway.
And IMHO it is a bad idea to roll your own encryption/decryption like this. Use a trusted known solution instead.
Question: I only want to know if I have translated the function correctly to C# so it does the same as in Python
Answer Its more of a transliteration rather than a translation. If I were to re-write the python into c# it would look different.