Advertisement
Guest User

Untitled

a guest
May 24th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. <?php
  2.  
  3. function my_base64_encode($str)
  4. {
  5. $base64 = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/');
  6. $bit_pattern = '';
  7. $padding = 0;
  8. $encoded = '';
  9.  
  10. foreach (str_split($str) as $char) {
  11. $bit_pattern .= sprintf('%08s', decbin(ord($char)));
  12. }
  13.  
  14. $bit_pattern = str_split($bit_pattern, 6);
  15.  
  16. $offset = count($bit_pattern) - 1;
  17. if (strlen($bit_pattern[$offset]) < 6) {
  18. $padding = 6 - strlen($bit_pattern[$offset]);
  19. $bit_pattern[$offset] .= str_repeat('0', $padding);
  20. $padding /= 2;
  21. }
  22.  
  23. foreach ($bit_pattern as $bit6) {
  24. $index = bindec($bit6);
  25. $encoded .= $base64[$index];
  26. }
  27.  
  28. return $encoded.str_repeat('=', $padding);
  29. }
  30.  
  31. function my_base64_decode($str)
  32. {
  33. $base64 = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/');
  34. $bit_pattern = '';
  35. $padding = substr_count(substr(strrev($str), 0, 2), '=');
  36. $decoded = '';
  37.  
  38. foreach (str_split($str) as $b64_encoded) {
  39. $bit_pattern .= sprintf('%06s', decbin(array_search($b64_encoded, $base64)));
  40. }
  41.  
  42. $bit_pattern = str_split($bit_pattern, 8);
  43. if ($padding) {
  44. $bit_pattern = array_slice($bit_pattern, 0, -$padding);
  45. }
  46.  
  47. foreach ($bit_pattern as $bin) {
  48. $decoded .= chr(bindec($bin));
  49. }
  50.  
  51. return $decoded;
  52. }
  53.  
  54. $to_encode = 'Hello World ! :)';
  55. $base64_encode = base64_encode($to_encode);
  56. $my_base64_encode = my_base64_encode($to_encode);
  57. $base64_decode = base64_decode($base64_encode);
  58. $my_base64_decode = my_base64_decode($my_base64_encode);
  59.  
  60. var_dump(
  61. 'To encode/decode : '.$to_encode,
  62. '-------------------------------------------',
  63. 'base64_encode : '.$base64_encode,
  64. 'my_base64_encode : '.$my_base64_encode,
  65. '-------------------------------------------',
  66. 'base64_decode : '.$base64_decode,
  67. 'my_base64_decode : '.$my_base64_decode
  68. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement