des.init.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. if (! defined('IS_INITPHP'))
  3. exit('Access Denied!');
  4. class desInit {
  5. public static function Encrypt($key, $text) {
  6. $size = mcrypt_get_block_size('des', 'ecb');
  7. $text = self::pkcs5_pad($text, $size);
  8. $td = mcrypt_module_open('tripledes', '', 'ecb', '');
  9. $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
  10. mcrypt_generic_init($td, $key, $iv);
  11. $data = mcrypt_generic($td, $text);
  12. mcrypt_generic_deinit($td);
  13. mcrypt_module_close($td);
  14. $data = base64_encode($data);
  15. return $data;
  16. }
  17. public static function Decrypt($key, $encrypted) {
  18. $encrypted = base64_decode($encrypted);
  19. $td = mcrypt_module_open('des', '', 'ecb', '');
  20. $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
  21. $ks = mcrypt_enc_get_key_size($td);
  22. mcrypt_generic_init($td, $key, $iv);
  23. $decrypted = mdecrypt_generic($td, $encrypted);
  24. mcrypt_generic_deinit($td);
  25. mcrypt_module_close($td);
  26. $plain_text = self::pkcs5_unpad($decrypted);
  27. return $plain_text;
  28. }
  29. public function encrypt_ungeneric($key, $text) {
  30. $iv = mcrypt_create_iv(mcrypt_get_iv_size('tripledes', MCRYPT_MODE_ECB), MCRYPT_RAND);
  31. $encrypted_string = mcrypt_encrypt('tripledes', $key, $text, MCRYPT_MODE_ECB, $iv);
  32. $des3 = bin2hex($encrypted_string);
  33. // $base64=base64_encode($encrypted_string);
  34. return $des3;
  35. }
  36. public function decrypt_ungeneric($key, $encrypted) {
  37. $encrypted_string = @pack("H*", $encrypted);
  38. $iv = mcrypt_create_iv(mcrypt_get_iv_size('tripledes', MCRYPT_MODE_ECB), MCRYPT_RAND);
  39. $plain_txt = mcrypt_decrypt('tripledes', $key, $encrypted_string, MCRYPT_MODE_ECB, $iv);
  40. return $plain_txt;
  41. }
  42. public static function pkcs5_pad($text, $blocksize) {
  43. $pad = $blocksize - (strlen($text) % $blocksize);
  44. return $text . str_repeat(chr($pad), $pad);
  45. }
  46. public static function pkcs5_unpad($text) {
  47. $pad = ord($text{strlen($text) - 1});
  48. if ($pad > strlen($text)) {
  49. return false;
  50. }
  51. if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) {
  52. return false;
  53. }
  54. return substr($text, 0, - 1 * $pad);
  55. }
  56. }