Re: Simple cipher program help
From: John E. Hadstate (nospam_at_null.nil)
Date: 04/28/03
 Next message: John E. Hadstate: "Re: RIP proof secret splitting"
 Previous message: David Wilson: "Re: Simple resource protection with public keys"
 In reply to: Paul: "Simple cipher program help"
 Next in thread: Paul: "Re: Simple cipher program help"
 Reply: Paul: "Re: Simple cipher program help"
 Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Date: Mon, 28 Apr 2003 12:51:51 0400
"Paul" <luap.h@bt_removethis_internet.com> wrote in message
news:b8j6ks$jii$1@hercules.btinternet.com...
> I'm trying to write a program to take 64bits of plaintext in, using some
> kind of key, create 64bit cipher text.
>
> All this done over 16 iterations. Kind of like a really simple DES.
>
> I'm no good at programming, and just new to ciphertext  its just a little
> part of my school course.
>
> I was thinking, getting the input and key to binary, then XORing them,
then
> for each result, XORing it with the key.
>
> Will this work, or be reversible?
>
> Can anyone point me to tutorials/examples of something like this.
>
> Thanks for any help!!
> Paul
>
With so many good ciphers out there, I'm not sure why I'd want to trust my
secrets to one that's not very good, but here is a very simple cipher that
meets your requirements:
Choose a 64bit key: 0123456789abcdef (or any other value)
Break the 64bit key into 16 equal pieces:
0 1 2 3 4 5 6 7 8 9 a b c d e f
Create sixteen 32bit words by replicating the pieces
eight times:
00000000 11111111 22222222 33333333 ... ffffffff
Now, take your 64bit data block and divide it into two 32bit parts. Call
the parts L (left) and R (right).
For the first round, calculate
L(new) = R xor (00000000 xor L)
R(new) = L xor 00000000
For the second round, let R = R(new) and L = L(new) and calculate:
L(new) = R xor (11111111 xor L)
R(new) = L xor 11111111
For the third round, let R = R(new) and L = L(new) and calculate:
L(new) = R xor (22222222 xor L)
R(new) = L xor 22222222
Continue through the sixteenth round:
L(new) = R xor (ffffffff xor L)
R(new) = L xor ffffffff
Join the two 32bit words, L(new) and R(new) to make the 64bit ciphertext.
To decrypt, use the following pattern:
L(new) = R xor ffffffff
R(new) = L xor R
L(new) = R xor eeeeeeee
R(new) = L xor R
L(new) = R xor dddddddd
R(new) = L xor R
and continuing to
L(new) = R xor 00000000
R(new) = L xor R
Then combine L(new) and R(new) to yield the 64bit plaintext.
===========================================================
The output below shows intermediate results from a program that does exactly
this, starting with a key value of 0x0123456789abcdef and a plaintext string
of "The dogs". It produces a 64bit ciphertext value that it then reverses
into the original 64bit plaintext.
Key Value: 01234567 89ABCDEF
Key[ 0] = 00000000
Key[ 1] = 11111111
Key[ 2] = 22222222
Key[ 3] = 33333333
Key[ 4] = 44444444
Key[ 5] = 55555555
Key[ 6] = 66666666
Key[ 7] = 77777777
Key[ 8] = 88888888
Key[ 9] = 99999999
Key[10] = AAAAAAAA
Key[11] = BBBBBBBB
Key[12] = CCCCCCCC
Key[13] = DDDDDDDD
Key[14] = EEEEEEEE
Key[15] = FFFFFFFF
Plaintext: The dogs = (20656854 73676F64)
Encrypting:
Round L R
0: 20656854 73676F64
1: 53020730 20656854
2: 62767E75 42131621
3: 02474A76 40545C57
4: 71202512 31747945
5: 04101813 35646156
6: 64212C10 51454D46
7: 53020730 02474A76
8: 26323A31 24757047
9: 8ACFC2FE AEBAB2B9
10: BDECE9DE 13565B67
11: 04101813 17464374
12: A8EDE0DC BFABA3A8
13: DB8A8FB8 64212C10
14: 62767E75 06575265
15: 8ACFC2FE 8C98909B
Ciphertext: F9A8AD9A 75303D01
Decrypting:
Round L R
0: F9A8AD9A 75303D01
1: 8ACFC2FE 8C98909B
2: 62767E75 06575265
3: DB8A8FB8 64212C10
4: A8EDE0DC BFABA3A8
5: 04101813 17464374
6: BDECE9DE 13565B67
7: 8ACFC2FE AEBAB2B9
8: 26323A31 24757047
9: 53020730 02474A76
10: 64212C10 51454D46
11: 04101813 35646156
12: 71202512 31747945
13: 02474A76 40545C57
14: 62767E75 42131621
15: 53020730 20656854
Plaintext: 20656854 73676F64
Plaintext: The dogs
 Next message: John E. Hadstate: "Re: RIP proof secret splitting"
 Previous message: David Wilson: "Re: Simple resource protection with public keys"
 In reply to: Paul: "Simple cipher program help"
 Next in thread: Paul: "Re: Simple cipher program help"
 Reply: Paul: "Re: Simple cipher program help"
 Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Relevant Pages
