ctr.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/__node_modules/browserify-aes/modes/ctr.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}var xor = require('buffer-xor')
  12. var Buffer = require('safe-buffer').Buffer
  13. var incr32 = require('../incr32')
  14. function getBlock (self) {
  15. var out = self._cipher.encryptBlockRaw(self._prev)
  16. incr32(self._prev)
  17. return out
  18. }
  19. var blockSize = 16
  20. exports.encrypt = function (self, chunk) {
  21. var chunkNum = Math.ceil(chunk.length / blockSize)
  22. var start = self._cache.length
  23. self._cache = Buffer.concat([
  24. self._cache,
  25. Buffer.allocUnsafe(chunkNum * blockSize)
  26. ])
  27. for (var i = 0; i < chunkNum; i++) {
  28. var out = getBlock(self)
  29. var offset = start + i * blockSize
  30. self._cache.writeUInt32BE(out[0], offset + 0)
  31. self._cache.writeUInt32BE(out[1], offset + 4)
  32. self._cache.writeUInt32BE(out[2], offset + 8)
  33. self._cache.writeUInt32BE(out[3], offset + 12)
  34. }
  35. var pad = self._cache.slice(0, chunk.length)
  36. self._cache = self._cache.slice(chunk.length)
  37. return xor(chunk, pad)
  38. }
  39. }
  40. if (nodeEnv) {
  41. __define(__module.exports, __require, __module);
  42. }
  43. else {
  44. __quick_compile_project__.registerModuleFunc(__filename, function () {
  45. __define(__module.exports, __require, __module);
  46. });
  47. }
  48. })();