/src/core/crypt/Adler32.js

http://github.com/zynga/core · JavaScript · 34 lines · 15 code · 4 blank · 15 comment · 1 complexity · c3ce8332a3911622e73fdd4308acea62 MD5 · raw file

  1. /*
  2. ==================================================================================================
  3. Core - JavaScript Foundation
  4. Copyright 2010-2012 Zynga Inc.
  5. ==================================================================================================
  6. */
  7. /**
  8. * Implements the Adler32 checksum
  9. *
  10. * See also: http://en.wikipedia.org/wiki/Adler-32
  11. */
  12. core.Module("core.crypt.Adler32",
  13. {
  14. /**
  15. * {Integer} Returns the Adler-32 checksum of @str {String}
  16. */
  17. checksum : function(str)
  18. {
  19. var MOD_ADLER = 65521;
  20. var a=1, b=0;
  21. str = str.encodeUtf8();
  22. // Process each byte of the string in order
  23. for (var index=0, len=str.length; index<len; ++index)
  24. {
  25. a = (a + str.charCodeAt(index)) % MOD_ADLER;
  26. b = (b + a) % MOD_ADLER;
  27. }
  28. return (b << 16) | a;
  29. }
  30. })