Encyrpted data sample

Pierre Sahores psahores at easynet.fr
Wed Apr 9 18:00:01 EDT 2003


PEChumbley at aol.com wrote:
> 
> Hi All,
> 
> The following script can be used to encode/decode text.  First, you need to
> generate a file of random numbers (I'll call it the "keyFile") which must be
> saved on each computer where you want to send or receive encrypted data.  You
> only do this once and then save the same file to each computer.  In this
> sample, I generate a keyFile of 10,000 random numbers.  I made no provisions
> in the script for exceeding that amount.  This file will let you encrypt
> 3,333 characters.
> 
> The way the encryption works is simple.  You simply get the ASCII number for
> each character and add a random number to it.  If the resulting number is
> greater than 999, I drop the first digit to keep all code numbers at 3
> charaters.  I add the first char back when I decrypt whenever the decryption
> would result in a negative ASCII number.
> 
> In this example, you can create a field called "myText" where you type the
> message to be encrypted.  After running encodeMyText you can copy the encoded
> text and paste it into your message for transmission.  At the receiving end,
> it is important that *just* the coded message is pasted back into the field
> for decryption.  This is because, the first part of the message contains the
> starting place for using the random number file to encode/decode the data.
> 
> By incrementing the starting number each time to the place where you last
> left off, the same numbers in the keyFile are never used again.  This is
> defined as a "one time pad."  The encryption is unbreakable (even by NSA).
> To maintain the intergrity of the code, you might want to have a different
> random number file for each direction you will be sending encrypted messages.
>  For example, if Bob sends a message to Jane, he might wish to encode it with
> keyFile A.  When Jane receives the message, she will decode it because she
> also has a copy of keyFile A on her computer.  However, if Jane wants to send
> a message back to Bob, she will encode it using keyFile B.  Bob also has a
> copy of keyFile B  so he can decode her message. By each user having their
> own keyFile for encryption, the chance of re-using numbers from one file is
> eliminated. (For instance, if Bob and Jane both wrote messages to each other
> at the same time using the same keyFile, there would be two messages in
> existence using the same numbers since the start numbers were not incremented
> sequentially.)  In my sample, I used an "A" to indicate the start of the
> encrypted message.  If Jane encrypts her message using keyFile B, she could
> indicate this by using a "B" instead of an "A."  Your decryption handler
> could then note this change in order to decode the message using the proper
> keyFile.
> 
> If anyone is interested in reading about codes and cyphers, I recommend an
> excellent book by David Kahn called "The Codebreakers."  There is also an
> excellent recent book called "The Code Book" by Simon Singh.
> 
> Hope this helps.
> 
> Philip Chumbley
> 
> ------------------------------------------------------------------------------
> 
> ---------------------
> # myNumberFile is the file of random numbers which constitutes my keyFile
> # myPointerFile stores the starting point for the next encryption of text
> 
> on generateNumbers
>   # This handler will generate a keyFile containing 10,000 random numbers
>   put empty into myNum
>   repeat 10000
>     put random(10) - 1 after myNum
>   end repeat
>   open file myNumberFile for write
>   write myNum to file myNumberFile
>   close file myNumberFile
> 
>   # Set the pointer to the start of the file
>   put 1 into tStart
>   open file myPointerFile for write
>   write tStart to file myPointerFile
>   close file myPointerFile
>   beep
> end generateNumbers
> 
> on encodeMyText
>   # Takes text from field "myText" and encodes it and puts it back into the
> field
>   put field myText into tText
> 
>   # Get the starting point
>   open file myPointerFile for read
>   read from file myPointerFile until eof
>   close file myPointerFile
>   put it into tStart
>   put tStart into tStart0
> 
>   # Read in the keyFile (your random file)
>   open file myNumberFile for read
>   read from file myNumberFile until eof
>   close file myNumberFile
>   put it into myKey
> 
>   # Encrypt the text
>   put empty into cipherText    # cipherText is the encyrpted message
>   repeat for each char c in tText
>     put char tStart to (tStart + 2) of myKey into cNum
>     add 3 to tStart
>     put charToNum(c) + cNum into charCodeNumber
>     if the number of chars in charCodeNumber = 4 then delete char 1 of
> charCodeNumber   # Save only the last three digits
>     if the number of chars in charCodeNumber = 1 then put "00" &
> charCodeNumber into charCodeNumber
>     if the number of chars in charCodeNumber = 2 then put "0" &
> charCodeNumber into charCodeNumber
>     put space & charCodeNumber after cipherText
>   end repeat
>   # You must pass the starting point along with the cipherText
>   put tStart0 & "A" & cipherText into field "myText"
> 
>   # Save the new starting point
>   open file myPointerFile for write
>   write tStart to file myPointerFile
>   close file myPointerFile
> end encodeMyText
> 
> on decodeMyText
>   # Takes text from field 'myText" and decodes it and puts it back into field
> "myText"
>   put field "myText" into tText
> 
>   # Read in the key
>   open file myNumberFile for read
>   read from file myNumberFile until eof
>   close file myNumberFile
>   put it into myKey
> 
>   # Get the starting point
>   get offset("A",tText)
>   put char 1 to (it - 1) of tText into tStart
>   delete char 1 to it of tText
> 
>   # Decode the text
>   put empty into plainText
>   repeat for each word i in tText
>     put i into ii
>     put char tStart to (tStart + 2) of myKey into cNum
>     add 3 to tStart
>     if cNum > ii then add 1000 to ii
>     put numToChar(ii - cNum) after plainText
>   end repeat
>   put plainText into field "myText"
> 
>   # Save the new starting point
>   open file myPointerFile for write
>   write tStart to file myPointerFile
>   close file myPointerFile
> end decodeMyText
> _______________________________________________
> metacard mailing list
> metacard at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/metacard

Thanks a lot for your input ! Directly stored for future uses :-)
--
Cordialement, Pierre Sahores

Inspection académique de Seine-Saint-Denis.
Applications et bases de données WEB et VPN
Qualifier et produire l'avantage compétitif



More information about the metacard mailing list