Skip to content

Commit c8ab49f

Browse files
committed
fix key and iv decoding
1 parent 706b937 commit c8ab49f

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

index.js

+6
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,16 @@ function DES (opts) {
2525
type = 'encrypt'
2626
}
2727
var key = opts.key
28+
if (!Buffer.isBuffer(key)) {
29+
key = Buffer.from(key)
30+
}
2831
if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {
2932
key = Buffer.concat([key, key.slice(0, 8)])
3033
}
3134
var iv = opts.iv
35+
if (!Buffer.isBuffer(iv)) {
36+
iv = Buffer.from(iv)
37+
}
3238
this._des = mode.create({
3339
key: key,
3440
iv: iv,

test.js

+33
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,39 @@ Object.keys(modes).forEach(function (mode) {
4343
var plainText = Buffer.concat([ourDecrypt.update(ourCipherText), ourDecrypt.final()])
4444
t.equals(text.toString('hex'), plainText.toString('hex'))
4545
})
46+
t.test('run text: ' + i, function (t) {
47+
t.plan(2)
48+
var key = crypto.randomBytes(32).toString('base64').slice(0, modes[mode].key)
49+
var iv = crypto.randomBytes(32).toString('base64').slice(0, modes[mode].iv)
50+
var text = crypto.randomBytes(200)
51+
var ourEncrypt
52+
try {
53+
ourEncrypt = new DES({
54+
mode: mode,
55+
key: key,
56+
iv: iv
57+
})
58+
} catch (e) {
59+
t.notOk(e, e.stack)
60+
}
61+
var nodeEncrypt
62+
try {
63+
nodeEncrypt = crypto.createCipheriv(mode, key, iv)
64+
} catch (e) {
65+
t.notOk(e, e.stack)
66+
}
67+
var ourCipherText = Buffer.concat([ourEncrypt.update(text), ourEncrypt.final()])
68+
var nodeCipherText = Buffer.concat([nodeEncrypt.update(text), nodeEncrypt.final()])
69+
t.equals(nodeCipherText.toString('hex'), ourCipherText.toString('hex'))
70+
var ourDecrypt = new DES({
71+
mode: mode,
72+
key: key,
73+
iv: iv,
74+
decrypt: true
75+
})
76+
var plainText = Buffer.concat([ourDecrypt.update(ourCipherText), ourDecrypt.final()])
77+
t.equals(text.toString('hex'), plainText.toString('hex'))
78+
})
4679
}
4780
})
4881
})

0 commit comments

Comments
 (0)