Pretty Modular Symetric Encryption

PMSE is really tunable ! It combines 1 or 2 passwords, pseudo-random key calculation, and data bytes swapping.

" PMSE Algorithm"

PMSE (Pretty Modular Symetric Encryption) use 1 or 2 passwords in order to create a pseudo-random key as long as the message to be encrypted. Encryption method tested with image encryption tends to the entropy obtained with One-Time-Pad encryption (cf. ref).

This encryption method appears to be fast and secure ! For more details, see the technical note available here.

Algorithm of PMSE (pseudo-script):

for (i=0; i.. message.length; i++){

 // Pseudo random byte generation		
    // polynomial order 1 or 2  (params: order, b_ and div_)        
    Yn = x2*i*i + b_*x1*i + Yn>>div_; 
		
	xa = (Yn & 0xFF000000)>>24 ;
	xb = (Yn & 0xFF0000)>>16 ;
	xc = (Yn & 0xFF00)>>8 ;
	xd = Yn & 0xFF;
	x0 = (xa^xb^xc^xd); //x0 ~> "crc8" of Yn
				
	x1 =  password[i % password.length]; // simple itterative selection of password char
	x2 =  login[x1 % login.length]; // char selection depanding on x1
	x3 = (i*x1 - x3*x2)%255; // x3 depends on i, x1, x2 and from previous x3
	xt = (xt^x0^x1^x2^x3)&0xFF;  // pseudo-random key for xor encryption, depends on x0, x1, x2, x3 and previous xt
		
		if (xt==0){
			// reinit of the algo with IV values
			x0=i%iv(0); x1=i%iv(1); x2=i%iv(2); x3=i%iv(3); xt=i%iv(4); Yn = i%iv(5);
		}
		
 // reversible bit switching (several permuation and complementation cases varying with params)
	message_swapped[i] = bit_switching(message[i]);	

 // XOR encryption
	crypt = (message_swapped[i] ^ xt )&0xFF; 

}

Login

Password

Salt

IV

PMSE modularity

Checksum (hex)

Clear/Encrypted text