pad-zeropadding.js 597 B

123456789101112131415161718192021222324252627282930
  1. /**
  2. * Zero padding strategy.
  3. */
  4. export const ZeroPadding = {
  5. pad(data, blockSize) {
  6. const _data = data;
  7. // Shortcut
  8. const blockSizeBytes = blockSize * 4;
  9. // Pad
  10. _data.clamp();
  11. _data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
  12. },
  13. unpad(data) {
  14. const _data = data;
  15. // Shortcut
  16. const dataWords = _data.words;
  17. // Unpad
  18. for (let i = _data.sigBytes - 1; i >= 0; i -= 1) {
  19. if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {
  20. _data.sigBytes = i + 1;
  21. break;
  22. }
  23. }
  24. },
  25. };