Whirlpool.pm
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #########################################################################
  2. #  OpenKore - Whirlpool hashing algorithm
  3. #
  4. #  This software is open source, licensed under the GNU General Public
  5. #  License, version 2.
  6. #  Basically, this means that you're allowed to modify and distribute
  7. #  this software. However, if you distribute modified versions, you MUST
  8. #  also distribute the source code.
  9. #  See http://www.gnu.org/licenses/gpl.html for the full license.
  10. #########################################################################
  11. ##
  12. # MODULE DESCRIPTION: Whirlpool hashing algorithm
  13. #
  14. # This is an implementation of
  15. # <a href="http://en.wikipedia.org/wiki/Whirlpool_%28hash%29">Whirlpool</a>.
  16. # Whirlpool is a secure, 512-bit one-way hashing algorithm.
  17. #
  18. # <h3>Example:</h3>
  19. # <pre class="example">
  20. # use Utils::Whirlpool qw(whirlpool whirlpool_hex);
  21. #
  22. # $hash = whirlpool_hex("");     # 19fa61d75522a4669b44e39c1d2e1726c530232130d407f89afee0964997f7a
  23. #                                # 73e83be698b288febcf88e3e03c4f0757ea8964e59b63d93708b138cc42a66eb3
  24. # $hash = whirlpool_hex("abc");  # 4e2448a4c6f486bb16b6562c73b4020bf3043e3a731bce721ae1b303d97e6d4c
  25. #                                # 7181eebdb6c57e277d0e34957114cbd6c797fc9d95d8b582d225292076d4eef5
  26. # </pre>
  27. package Utils::Whirlpool;
  28. use strict;
  29. use XSTools;
  30. use Exporter;
  31. use base qw(Exporter);
  32. our @EXPORT_OK = qw(whirlpool whirlpool_hex);
  33. XSTools::bootModule('Utils::Whirlpool');
  34. ##
  35. # Bytes Utils::Whirlpool::whirlpool(Bytes data)
  36. # data: The data to calculate the hash for.
  37. # Returns: A whirlpool hash, in raw bytes.
  38. # Ensures: defined(result)
  39. #
  40. # Calculate the Whirlpool hash for the given data.
  41. #
  42. # This symbol is exportable.
  43. sub whirlpool {
  44. my $wp = new Utils::Whirlpool();
  45. $wp->add($_[0]);
  46. return $wp->finalize();
  47. }
  48. ##
  49. # String Utils::Whirlpool::whirlpool_hex(Bytes data)
  50. # data: The data to calculate the hash for.
  51. # Returns: A whirlpool hash as hexadecimal string.
  52. # Ensures: defined(result)
  53. #
  54. # Calculate the Whirlpool hash for the given data.
  55. #
  56. # This symbol is exportable.
  57. sub whirlpool_hex {
  58. return unpack("H*", &whirlpool);
  59. }
  60. 1;