This commit is contained in:
chrosey
2017-09-13 07:52:34 +02:00
parent a1f16c37f4
commit 2340b0226b
24621 changed files with 2912161 additions and 149 deletions
+68
View File
@@ -0,0 +1,68 @@
var md5 = require('create-hash/md5')
module.exports = EVP_BytesToKey
function EVP_BytesToKey (password, salt, keyLen, ivLen) {
if (!Buffer.isBuffer(password)) {
password = new Buffer(password, 'binary')
}
if (salt && !Buffer.isBuffer(salt)) {
salt = new Buffer(salt, 'binary')
}
keyLen = keyLen / 8
ivLen = ivLen || 0
var ki = 0
var ii = 0
var key = new Buffer(keyLen)
var iv = new Buffer(ivLen)
var addmd = 0
var md_buf
var i
var bufs = []
while (true) {
if (addmd++ > 0) {
bufs.push(md_buf)
}
bufs.push(password)
if (salt) {
bufs.push(salt)
}
md_buf = md5(Buffer.concat(bufs))
bufs = []
i = 0
if (keyLen > 0) {
while (true) {
if (keyLen === 0) {
break
}
if (i === md_buf.length) {
break
}
key[ki++] = md_buf[i]
keyLen--
i++
}
}
if (ivLen > 0 && i !== md_buf.length) {
while (true) {
if (ivLen === 0) {
break
}
if (i === md_buf.length) {
break
}
iv[ii++] = md_buf[i]
ivLen--
i++
}
}
if (keyLen === 0 && ivLen === 0) {
break
}
}
for (i = 0; i < md_buf.length; i++) {
md_buf[i] = 0
}
return {
key: key,
iv: iv
}
}
+92
View File
@@ -0,0 +1,92 @@
{
"_args": [
[
{
"raw": "evp_bytestokey@^1.0.0",
"scope": null,
"escapedName": "evp_bytestokey",
"name": "evp_bytestokey",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"c:\\xampp\\htdocs\\laravel\\node_modules\\browserify-cipher"
]
],
"_from": "evp_bytestokey@>=1.0.0 <2.0.0",
"_id": "evp_bytestokey@1.0.0",
"_inCache": true,
"_location": "/evp_bytestokey",
"_nodeVersion": "4.1.1",
"_npmUser": {
"name": "cwmma",
"email": "calvin.metcalf@gmail.com"
},
"_npmVersion": "2.14.4",
"_phantomChildren": {},
"_requested": {
"raw": "evp_bytestokey@^1.0.0",
"scope": null,
"escapedName": "evp_bytestokey",
"name": "evp_bytestokey",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/browserify-aes",
"/browserify-cipher",
"/parse-asn1"
],
"_resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz",
"_shasum": "497b66ad9fef65cd7c08a6180824ba1476b66e53",
"_shrinkwrap": null,
"_spec": "evp_bytestokey@^1.0.0",
"_where": "c:\\xampp\\htdocs\\laravel\\node_modules\\browserify-cipher",
"author": {
"name": "Calvin Metcalf",
"email": "calvin.metcalf@gmail.com"
},
"bugs": {
"url": "https://github.com/crypto-browserify/EVP_BytesToKey/issues"
},
"dependencies": {
"create-hash": "^1.1.1"
},
"description": "he super secure key derivation algorithm from openssl",
"devDependencies": {
"standard": "^5.3.1",
"tap-spec": "^4.1.0",
"tape": "^4.2.0"
},
"directories": {},
"dist": {
"shasum": "497b66ad9fef65cd7c08a6180824ba1476b66e53",
"tarball": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz"
},
"gitHead": "563bd30d95a7771ff0a18afc82cf92ed18f008d3",
"homepage": "https://github.com/crypto-browserify/EVP_BytesToKey",
"keywords": [
"crypto",
"openssl"
],
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "cwmma",
"email": "calvin.metcalf@gmail.com"
}
],
"name": "evp_bytestokey",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/crypto-browserify/EVP_BytesToKey.git"
},
"scripts": {
"test": "standard && node test.js | tspec"
},
"version": "1.0.0"
}
+13
View File
@@ -0,0 +1,13 @@
EVP_BytesToKey
===
The super secure [key derivation algorithm from openssl](https://wiki.openssl.org/index.php/Manual:EVP_BytesToKey(3)) (spoiler alert not actually secure, only every use it for compatibility reasons).
Api:
===
```js
var result = EVP_BytesToKey('password', 'salt', keyLen, ivLen);
Buffer.isBuffer(result.password); // true
Buffer.isBuffer(result.iv); // true
```
+19
View File
@@ -0,0 +1,19 @@
var test = require('tape')
var evp = require('./')
var crypto = require('crypto')
function runTest (password) {
test('password: ' + password, function (t) {
t.plan(1)
var keys = evp(password, false, 256, 16)
var nodeCipher = crypto.createCipher('aes-256-ctr', password)
var ourCipher = crypto.createCipheriv('aes-256-ctr', keys.key, keys.iv)
var nodeOut = nodeCipher.update('foooooo')
var ourOut = ourCipher.update('foooooo')
t.equals(nodeOut.toString('hex'), ourOut.toString('hex'))
})
}
runTest('password')
runTest('ふっかつ あきる すぶり はやい つける まゆげ たんさん みんぞく ねほりはほり せまい たいまつばな ひはん')
runTest('Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍A̴̵̜̰͔ͫ͗͢L̠ͨͧͩ͘G̴̻͈͍͔̹̑͗̎̅͛́Ǫ̵̹̻̝̳͂̌̌͘!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞')
runTest('💩')