【问题标题】:Key 128bits, return array 16 bits密钥 128 位,返回数组 16 位
【发布时间】:2014-01-07 01:05:55
【问题描述】:

我详细介绍了这个项目: 我正在为 mega.co.nz 使用 PHP SDK,但由于密码学问题(prepare_key 太慢,偶尔会导致我描述为“误报”的问题)我寻找登录的替代方案,并且在没有经验的情况下经过大量测试替代方案(python、c++、c#)后,我在 nodejs 中找到了一个 sdk,但无法适应我的需求。

SDK为https://github.com/tonistiigi/mega/,问题出在下一个:

Node.JS 返回一个 16 字节的数组,而 PHP 返回 4 个字(每个字 4 个字节)

否则如何将数组转换为将我返回到nodejs?

对不起我的英语!!

【问题讨论】:

    标签: php arrays node.js


    【解决方案1】:

    从 node.js 转换为 PHP 格式:

    buffer = require('buffer');
    
    arr = [8,24,40,56,72,88,104,120,136,152,168,184,200,216,232,248];
    console.log(arr.length);
    buff = new Buffer(arr);
    console.log(buff);
    
    phpstreq = [];
    phpinteq = [];
    length = 4;
    count = 0;
    while (count < 16)
    {
        phpinteq.push(buff.readUInt32BE(count,true))
        phpstreq.push(buff.slice(count,count+length));
        count += length;
    }
    console.log(phpinteq);
    console.log(phpstreq);
    

    上面的输出

    [ 135800888, 1213753464, 2291706040, 3369658616 ]
    [ <Buffer 08 18 28 38>,
      <Buffer 48 58 68 78>,
      <Buffer 88 98 a8 b8>,
      <Buffer c8 d8 e8 f8> ]
    

    从 PHP 转换为 node.js 格式:

    <?php
    $arr = [ 135800888, 1213753464, 2291706040, 3369658616 ];
    $bytearray =[];
    
    foreach ($arr as $byte4)
    {
        $eq = unpack("C*", pack("N", $byte4));
        $bytearray = array_merge($bytearray,$eq);
    }
    
    print_r($bytearray);
    ?>
    

    输出

    Array
    (
        [0] => 8
        [1] => 24
        [2] => 40
        [3] => 56
        [4] => 72
        [5] => 88
        [6] => 104
        [7] => 120
        [8] => 136
        [9] => 152
        [10] => 168
        [11] => 184
        [12] => 200
        [13] => 216
        [14] => 232
        [15] => 248
    )
    

    我在上面使用了大端格式。由于您对输出进行了模糊处理,因此您必须自己检查它。还要注意验证 node.js 中使用的输入数组。在 node.js 中,数组中的整数 x 必须是 0 &lt; x &lt; 256(记住每个数字 = 1 个字节)。

    【讨论】:

    • 很好,谢谢!这与“u_k”完美搭配,但对于“u_privk”我有问题。在 PHP 中是一个 4 的数组,array[0] 的长度为 320,array[1] 的长度为 320,array[2] 的长度为 628,array[3] 的长度为 318,NODE.JS 返回一个带有数组大小 4 数组 [0] 大小 37、数组 [1] 大小 37、数组 [2] 大小 74、数组 [3] 大小 37 中的内容。想法?
    • @Bayer 对于您展示的示例,转换很明显。两种情况的尺寸相同。你能在一个例子中展示这个吗(如果你愿意,可以隐藏必要的细节)。我以前没见过。
    • 您可以在此处查看数组:pastebin.com/28eSdVGC 我需要将 nodejs 数组显示为 php ._.,感谢您的帮助
    • 当然,如果有帮助的话,在 NODE.JS 和 PHP 中,RSA 的 privk 是用函数 a32_to_str 解析的。
    • 根据 MEGA RSA 公钥/私钥(2048 位:348/875 个字符)
    猜你喜欢
    • 2023-01-28
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 2013-08-23
    相关资源
    最近更新 更多