Copy Link
Add to Bookmark
Report

Xine - issue #4 - Phile 109

eZine's profile picture
Published in 
Xine
 · 6 months ago

 
/-----------------------------\
| Xine - issue #4 - Phile 109 |
\-----------------------------/


Crypting datas in order to protect it is like an art, decrypting another.
Crypting datas in order to avoid decryption had been headed for years,
but I think each technique used is due to fail. Like CRC, for example,
all ways used remember the password ( well, also encrypted ) so that it
has already been - or it could be - hacked! But what about encryption that
don't remember passwords? I'm thinking about ^ encryption. Imagine
we make:

for all bytes
byte = byte ^ n
next bytes

file: a b c d e f g h i j
crpt: n n n n n n n n n n
rslt: k l o p q r s t u v
with k = a ^ n, l = b ^ n, o = c ^ n, ...

I remember for those who don't very know XOR that a ^ a = 0
=> b ^ a ^ a = b }=> c ^ a = b
c = b ^ a }

This mean that if u XOR "x" with a number "a", you xor the number u obtain
again with "a" and obtain then "x" back. So, if u wanna decrypt the file,
you only have to crypt it again with the same password...

What's the main default of that ^ encryption? That's, if we know a byte of
that file, we can know "n", so let be imaginative, use several numbers!
Look that example:

file: a b c d e f g h i j
crpt: m n m n m n m n m n
rslt: k l o p q r s t u v
with k = a ^ m, l = b ^ n, o = c ^ m, ...

So, we have to know 2 bytes of that file ( 1 for m and 1 for n, 2 for n is
useless ). That's better but... Let's try with 10 numbers, or more! but all
will have to be remembered! Imagine we use a sentence as password:
"I'm so sick!", so n1 = asc("I"), n2 = asc("'"), n3 = asc("m"), ...
Ok, but if someone know the first 12 bytes of that file!

So, there is the problem: periodicity!
How to avoid periodicity? I think the only way is to make a password longer
than the file. Cool, I'll use my english lessons like passwords ;-).
I won't explain ya how, but I'll show you... imagine we have 2 periodicity,
one of 2 bytes and one of 3 bytes... the "total" periodicity will be of
6 bytes...

With this 2 passwords: mn (2) and opq (3)

file: a b c d e f g h i j
crpt: m n m n m n m n m n
o p q o p q o p q o
rslt: k l r s t u v w x y
with k = a ^ m ^ o, l = b ^ n ^ p, o = c ^ m ^ q, ...

After, 2 periodicity, one of 2 bytes and one of 4 bytes will give a "total"
of 4 bytes! That don't multiply perios, you have to make the LCM ( lower
common multiple ) of all passwords used...
That's easy to imagine a password of 7, one of 13 ( and why limit to 2
pass? ), another of 11... that will give a perio of 1001 bytes )

So, let be imaginative, if e have a file longer that 1001 bytes:
1st - you could add a 5 bytes long password, so that total perio is now 5005.
2nd - imagine that a people have to know 1001 byte of youre file to decrypt
it!
Yeah, he have to know 1001 byte, I tryed to find a system, with 2 passwords
, one of 2 and one of 3, if I only have the total, I won't be able to find
the 2 original pass, so if I miss some ( if I know even 900 of 1001, I won't
be able to find the 101 left ), I'm also not able to know the total perio,
perhaps could I guess it, but...

Ok, here are the sources in C, made for Watcom11:
------------------
void Crypt( char* Data, int DataSize, char** Pws, int NPws )
{
char* DataPtr, **PwsPtr;
int i, j;

PwsPtr = new char*[ NPws ];
for( j=0; j<NPws; j++ )
PwsPtr[j] = Pws[j];

for( i=0, DataPtr=Data; i<DataSize; i++, DataPtr++ )
{
for( j=0; j<NPws; j++ )
{
*DataPtr ^= *(PwsPtr[j]++);
if( *(PwsPtr[j]) == 0 )
PwsPtr[j] = Pws[j];
}
}
delete PwsPtr;
}
------------------
Notes:
1st - That tutorial was made by n0ph on the 18-02-98, for IKX, for XINE4.
2nd - If you find a way to hack that kind of password, write to
n0ph@HotMail.Com...
3rd - Visit "members.xoom.com/n0ph" !
4th - That's all folks!



← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT