linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Basic C encryption
@ 2003-07-08 14:13 Fabio Miranda Hamburger
  2003-07-08 14:41 ` Jan-Benedict Glaw
  2003-07-08 15:08 ` Glynn Clements
  0 siblings, 2 replies; 11+ messages in thread
From: Fabio Miranda Hamburger @ 2003-07-08 14:13 UTC (permalink / raw)
  To: linux-c-programming

Hi, I need a small, basic way to encrypt a binary file saving a custom
class from a windoze 32 proyect.

For example, add +1 to each character that is about to be saved in the
disk. How would that be?

---
Fabio Andres Miranda
Ingenieria de sistemas informaticos
Universidad Latina - Costa Rica



^ permalink raw reply	[flat|nested] 11+ messages in thread
* RE: Basic C encryption
@ 2003-07-08 17:48 Huber, George K CECOM RDEC STCD SRI
  2003-07-08 18:52 ` Jan-Benedict Glaw
  0 siblings, 1 reply; 11+ messages in thread
From: Huber, George K CECOM RDEC STCD SRI @ 2003-07-08 17:48 UTC (permalink / raw)
  To: 'Fabio Miranda Hamburger', linux-c-programming

Just add one.

For example, assume that there is a function (ReadByte()) that reads
a single byte from a file and returns it as a char.  Also assume that 
there is a function (WriteByte(char)) that writes a single character
to an output file.  With these two functions, you can write your
encryption routine as:

unsigned char  ch;

while(!EOF)
{
   ch = ReadByte();
   int    nVal = (int)ch + 1;
   if(nVal > 255) nVal = 0;
   WriteByte(char(nVal));
}

So, for example if we read the character 'Z' from the input file which
has the ACSII value of 90, after adding one we would have the value 
91, which is character [.

The reason for the test is that in reading a binary file it is possible 
to return 0xFF as a possible value, which on adding on would yield 0x100
which would not fit into a single-byte quanity.  The decryption routine
would be as simple,

unsigned char  ch;

while(!EOF)
{
    ch = ReadByte();
    int   nVal = (int)ch - 1;
    if(nVal < 0) nVal = 255;
    WriteByte(char(nVal));
}



As others have pointed out, a simple subsitituion cypher is very easy
to break.  With a few additional lines of code, you can get a stronger
encryption.  The following example assumes that the values in the 
input file are between 0 and 127 (i.e. the normal ASCII values).  It is
left as an exercise for the reader to figure out how to modify this 
for the case when the values are between 0 and 255.

char*    lpKey = "This is a key"
char     ch;
int      nIdx = 0;


while(!EOF)
{
    ch = ReadByte();
    if(nIdx >= strlen(lpKey)) nIdx = 0;
    ch = (int)ch + int(lpKey[nIdx++]);
    WriteByte(ch);
}

George Huber




-----Original Message-----
From: Fabio Miranda Hamburger [mailto:fabmirha@ns.isi.ulatina.ac.cr]
Sent: Tuesday, July 08, 2003 10:13 AM
To: linux-c-programming@vger.kernel.org
Subject: Basic C encryption


Hi, I need a small, basic way to encrypt a binary file saving a custom
class from a windoze 32 proyect.

For example, add +1 to each character that is about to be saved in the
disk. How would that be?

---
Fabio Andres Miranda
Ingenieria de sistemas informaticos
Universidad Latina - Costa Rica


-
To unsubscribe from this list: send the line "unsubscribe
linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 11+ messages in thread
* RE: Basic C encryption
@ 2003-07-08 20:03 Huber, George K CECOM RDEC STCD SRI
  2003-07-08 20:09 ` Jan-Benedict Glaw
  0 siblings, 1 reply; 11+ messages in thread
From: Huber, George K CECOM RDEC STCD SRI @ 2003-07-08 20:03 UTC (permalink / raw)
  To: linux-c-programming



-----Original Message-----
From: Jan-Benedict Glaw [mailto:jbglaw@lug-owl.de]
Sent: Tuesday, July 08, 2003 2:52 PM
To: linux-c-programming@vger.kernel.org
Subject: Re: Basic C encryption

Jan-Benedict Glaw wrote:

>On Tue, 2003-07-08 13:48:14 -0400, Huber, George K CECOM RDEC STCD SRI
<George.K.Huber@us.army.mil>
>wrote in message
<DDFD9B60F648D411AD670000F80822EA03FCAAB6@mail7.monmouth.army.mil>:
>> Just add one.

[...]

>Nice examples, but mostly worthless. It was asked to "encrypt" a
>function (or a class/instance), not a file. Starting with the binary,
>you'd first need to find your function/method. Note that objects per se

[...]

actually read the original post, quoted below:

"Hi, I need a small, basic way to encrypt a binary file saving a custom
class from a windoze 32 proyect.

For example, add +1 to each character that is about to be saved in the
disk. How would that be?"

The original poster wanted to encrypt a binary file.  The question that he
asks is how to add a one to each characte (byte) being saved to disk -
exactly what my examples show.

George Huber

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2003-07-08 20:09 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-07-08 14:13 Basic C encryption Fabio Miranda Hamburger
2003-07-08 14:41 ` Jan-Benedict Glaw
2003-07-08 14:33   ` Fabio Miranda Hamburger
2003-07-08 14:48     ` Jan-Benedict Glaw
2003-07-08 15:08 ` Glynn Clements
2003-07-08 15:26   ` Fabio Miranda Hamburger
2003-07-08 16:01     ` Jan-Benedict Glaw
  -- strict thread matches above, loose matches on Subject: below --
2003-07-08 17:48 Huber, George K CECOM RDEC STCD SRI
2003-07-08 18:52 ` Jan-Benedict Glaw
2003-07-08 20:03 Huber, George K CECOM RDEC STCD SRI
2003-07-08 20:09 ` Jan-Benedict Glaw

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).