gpt4 book ai didi

node.js - 与 nodejs express 共享 laravel 4 session

转载 作者:搜寻专家 更新时间:2023-10-31 22:22:37 25 4
gpt4 key购买 nike

我正在尝试从 nodejs header 上的 cookie 中获取 laravel session ID。

到目前为止我已经尝试过:

function nodeDecrypt(data, key, iv) {
var decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
var chunks = []
chunks.push(decipher.update(chunk.toString(),'hex','binary'))
chunks.push(decipher.final('binary'))
return chunks.join('')
}

var cookie = JSON.parse(new Buffer(req.cookies.gjsess, 'base64'));
var iv = new Buffer(cookie.iv, 'base64');
var value = new Buffer(cookie.value, 'base64');

var dec = nodeDecrypt(value, 'YourSecretKey!!!', iv);

但到目前为止,我一直收到 Invalid IV length 32

YourSecretKey!!! 是在 laravel 4 的 app.php 中找到的 key 。


Laravel 加密机制:

protected $cipher = 'rijndael-256';
protected $mode = 'cbc';
protected $block = 32;

...

$payload = $this->getJsonPayload($payload);
$value = base64_decode($payload['value']);
$iv = base64_decode($payload['iv']);
return unserialize($this->stripPadding($this->mcryptDecrypt($value, $iv)));

...

return mcrypt_decrypt($this->cipher, $this->key, $value, $this->mode, $iv);

...

$this->app->bindShared('encrypter', function($app)
{
return new Encrypter($app['config']['app.key']);
});

其他尝试

var cookie = JSON.parse(new Buffer(req.cookies.gjsess, 'base64'));
var iv = new Buffer(cookie.iv, 'base64');
var value = new Buffer(cookie.value, 'base64');

var MCrypt = require('mcrypt').MCrypt;
var desEcb = new MCrypt('rijndael-256', 'cbc');
desEcb.open('YourSecretKey!!!');
var plaintext = desEcb.decrypt(value, 'base64');

这不会给出错误,但仍然得到无用的数据。

最佳答案

我终于明白了!这是我的解决方案。非常适合我。

// requirements
var PHPUnserialize = require('php-unserialize'); // npm install php-unserialize
var MCrypt = require('mcrypt').MCrypt; // npm install mcrypt


// helper function

function ord( string ) { // Return ASCII value of character
//
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

return string.charCodeAt(0);
}


function getSessionIdFromLaravelCookie() {

var cookie = JSON.parse(new Buffer(req.cookies.laravel_session, 'base64'));
var iv = new Buffer(cookie.iv, 'base64');
var value = new Buffer(cookie.value, 'base64');
var key = "_Encryption Key_";

var rijCbc = new MCrypt('rijndael-256', 'cbc');
rijCbc.open(key, iv); // it's very important to pass iv argument!

var decrypted = rijCbc.decrypt(value).toString();


var len = decrypted.length - 1;
var pad = ord(decrypted.charAt(len));

var sessionId = PHPUnserialize.unserialize(decrypted.substr(0, decrypted.length - pad));

return sessionId;

}

关于node.js - 与 nodejs express 共享 laravel 4 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22658222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com