pad-ansix923.js 965 B

1234567891011121314151617181920212223242526272829303132333435
  1. /*
  2. CryptoJS v3.1.2
  3. code.google.com/p/crypto-js
  4. (c) 2009-2013 by Jeff Mott. All rights reserved.
  5. code.google.com/p/crypto-js/wiki/License
  6. */
  7. /**
  8. * ANSI X.923 padding strategy.
  9. */
  10. CryptoJS.pad.AnsiX923 = {
  11. pad: function (data, blockSize) {
  12. // Shortcuts
  13. var dataSigBytes = data.sigBytes;
  14. var blockSizeBytes = blockSize * 4;
  15. // Count padding bytes
  16. var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
  17. // Compute last byte position
  18. var lastBytePos = dataSigBytes + nPaddingBytes - 1;
  19. // Pad
  20. data.clamp();
  21. data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);
  22. data.sigBytes += nPaddingBytes;
  23. },
  24. unpad: function (data) {
  25. // Get number of padding bytes from last byte
  26. var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
  27. // Remove padding
  28. data.sigBytes -= nPaddingBytes;
  29. }
  30. };