1. <?php
  2.  
  3. //------------------------------------------------------------------------------------
  4. function evalCrossTotal($strMD5)
  5. {
  6. $intTotal = 0;
  7. $arrMD5Chars = str_split($strMD5, 1);
  8. foreach ($arrMD5Chars as $value)
  9. {
  10. $intTotal += '0x0'.$value;
  11. }
  12. return $intTotal;
  13. }//-----------------------------------------------------------------------------------
  14.  
  15.  
  16.  
  17. //------------------------------------------------------------------------------------
  18. function encryptString($strString, $strPassword)
  19. {
  20. // $strString is the content of the entire file with serials
  21. $strPasswordMD5 = md5($strPassword);
  22. $intMD5Total = evalCrossTotal($strPasswordMD5);
  23. $arrEncryptedValues = array();
  24. $intStrlen = strlen($strString);
  25. for ($i=0; $i<$intStrlen; $i++)
  26. {
  27. $arrEncryptedValues[] = ord(substr($strString, $i, 1))
  28. + ('0x0' . substr($strPasswordMD5, $i%32, 1))
  29. - $intMD5Total;
  30. $intMD5Total = evalCrossTotal(substr(md5(substr($strString,0,$i+1)), 0, 16)
  31. . substr(md5($intMD5Total), 0, 16));
  32. }
  33. return implode(' ' , $arrEncryptedValues);
  34. }//-----------------------------------------------------------------------------------
  35.  
  36. ?>