nodejs中反解php的tripledes-ecb加密的密文。

张亚涛
  • 5.2k
<?php
function _encrypt($value,$mAuthkey) {
    if(null==$value) return false;
    $td = mcrypt_module_open('tripledes', '', 'ecb', '');
    $td_size = mcrypt_enc_get_iv_size($td);
    $iv = mcrypt_create_iv($td_size,MCRYPT_RAND);
    $key = substr($mAuthkey, 0, $td_size);
    mcrypt_generic_init($td, $key, $iv);
    $ret = base64_encode(mcrypt_generic($td, $value));
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $ret;
}

以上为php的加密代码,请问在nodejs中需要怎么写才可以反解出来以上代码加密出来的内容哪?

已经琢磨一天了,网上的方法都尝试过了,可是解出来的都是乱码,到底怎么样才可以呀。。。

真心求帮助啊~

回复
阅读 520
1 个回答
// php的padding算法为PKCS7,而node的padding算法是:ZeroPadding;详情见https://segmentfault.com/a/1190000019793040
// 另外,chiper和chiperiv是两回事儿,千万不要混用。
function decodeCookie(value) {
    if (!value) {
        return '';
    }
    const PKCS7 = '\x01\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08';
    var key = COOKIE_KEY + PKCS7;
    value = Buffer.from(decodeURIComponent(value), 'base64');
    const cipher = crypto.createDecipheriv('des-ede3', key, null);
    cipher.setAutoPadding();
    let text = cipher.update(value) + cipher.final();
    console.log(text);
}

终于弄出来了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏