index.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. var CipherBase = require('cipher-base')
  2. var des = require('des.js')
  3. var inherits = require('inherits')
  4. var modes = {
  5. 'des-ede3-cbc': des.CBC.instantiate(des.EDE),
  6. 'des-ede3': des.EDE,
  7. 'des-ede-cbc': des.CBC.instantiate(des.EDE),
  8. 'des-ede': des.EDE,
  9. 'des-cbc': des.CBC.instantiate(des.DES),
  10. 'des-ecb': des.DES
  11. }
  12. modes.des = modes['des-cbc']
  13. modes.des3 = modes['des-ede3-cbc']
  14. module.exports = DES
  15. inherits(DES, CipherBase)
  16. function DES (opts) {
  17. CipherBase.call(this)
  18. var modeName = opts.mode.toLowerCase()
  19. var mode = modes[modeName]
  20. var type
  21. if (opts.decrypt) {
  22. type = 'decrypt'
  23. } else {
  24. type = 'encrypt'
  25. }
  26. var key = opts.key
  27. if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {
  28. key = Buffer.concat([key, key.slice(0, 8)])
  29. }
  30. var iv = opts.iv
  31. this._des = mode.create({
  32. key: key,
  33. iv: iv,
  34. type: type
  35. })
  36. }
  37. DES.prototype._update = function (data) {
  38. return new Buffer(this._des.update(data))
  39. }
  40. DES.prototype._final = function () {
  41. return new Buffer(this._des.final())
  42. }