Created
December 17, 2015 16:22
-
-
Save tjnicolaides/97169be24634f430f7a6 to your computer and use it in GitHub Desktop.
[PHP] - Encrypt/Decrypt a string without a known key
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?PHP | |
/* | |
Description : A function with a very simple but powerful xor method to encrypt | |
and/or decrypt a string with an unknown key. Implicitly the key is | |
defined by the string itself in a character by character way. | |
There are 4 items to compose the unknown key for the character | |
in the algorithm | |
1.- The ascii code of every character of the string itself | |
2.- The position in the string of the character to encrypt | |
3.- The length of the string that include the character | |
4.- Any special formula added by the programmer to the algorithm | |
to calculate the key to use | |
*/ | |
FUNCTION ENCRYPT_DECRYPT($Str_Message) { | |
//Function : encrypt/decrypt a string message v.1.0 without a known key | |
//Author : Aitor Solozabal Merino (spain) | |
//Email : aitor-3@euskalnet.net | |
//Date : 01-04-2005 | |
$Len_Str_Message=STRLEN($Str_Message); | |
$Str_Encrypted_Message=""; | |
FOR ($Position = 0;$Position<$Len_Str_Message;$Position++){ | |
// long code of the function to explain the algoritm | |
//this function can be tailored by the programmer modifyng the formula | |
//to calculate the key to use for every character in the string. | |
$Key_To_Use = (($Len_Str_Message+$Position)+1); // (+5 or *3 or ^2) | |
//after that we need a module division because can´t be greater than 255 | |
$Key_To_Use = (255+$Key_To_Use) % 255; | |
$Byte_To_Be_Encrypted = SUBSTR($Str_Message, $Position, 1); | |
$Ascii_Num_Byte_To_Encrypt = ORD($Byte_To_Be_Encrypted); | |
$Xored_Byte = $Ascii_Num_Byte_To_Encrypt ^ $Key_To_Use; //xor operation | |
$Encrypted_Byte = CHR($Xored_Byte); | |
$Str_Encrypted_Message .= $Encrypted_Byte; | |
//short code of the function once explained | |
//$str_encrypted_message .= chr((ord(substr($str_message, $position, 1))) ^ ((255+(($len_str_message+$position)+1)) % 255)); | |
} | |
RETURN $Str_Encrypted_Message; | |
} //end function | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment