File Source for PasswordHasher.php

PHPExcel_Shared

# Source for file PasswordHasher.php

Documentation is available at PasswordHasher.php

1. <?php
2. /**
3. * PHPExcel
4. *
5. * Copyright (c) 2006 - 2011 PHPExcel
6. *
7. * This library is free software; you can redistribute it and/or
8. * modify it under the terms of the GNU Lesser General Public
9. * License as published by the Free Software Foundation; either
10. * version 2.1 of the License, or (at your option) any later version.
11. *
12. * This library is distributed in the hope that it will be useful,
13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15. * Lesser General Public License for more details.
16. *
17. * You should have received a copy of the GNU Lesser General Public
18. * License along with this library; if not, write to the Free Software
19. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20. *
21. * @category PHPExcel
22. * @package PHPExcel_Shared
23. * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
24. * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
25. * @version 1.7.6, 2011-02-27
26. */
29. /**
30. * PHPExcel_Shared_PasswordHasher
31. *
32. * @category PHPExcel
33. * @package PHPExcel_Shared
34. * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
35. */
36. class PHPExcel_Shared_PasswordHasher
37. {
38. /**
39. * Create a password hash from a given string.
40. *
41. * This method is based on the algorithm provided by
42. * Daniel Rentz of OpenOffice and the PEAR package
43. * Spreadsheet_Excel_Writer by Xavier Noguer <xnoguer@rezebra.com>.
44. *
45. * @param string $pPassword Password to hash
46. * @return string Hashed password
47. */
48. public static function hashPassword($pPassword = '') {
49. $password = 0x0000;
50. $i = 1; // char position
52. // split the plain text password in its component characters
53. $chars = preg_split('//', $pPassword, -1, PREG_SPLIT_NO_EMPTY);
54. foreach ($chars as $char) {
55. $value = ord($char) << $i; // shifted ASCII value
56. $rotated_bits = $value >> 15; // rotated bits beyond bit 15
57. $value &= 0x7fff; // first 15 bits
58. $password ^= ($value | $rotated_bits);
59. ++$i;
60. }
62. $password ^= strlen($pPassword);
63. $password ^= 0xCE4B;
65. return( strtoupper( dechex($password)));
66. }
67. }

Documentation generated on Sun, 27 Feb 2011 16:33:09 -0800 by phpDocumentor 1.4.3