Blame view

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