Преобразование расширенной функции C # в JavaScript - PullRequest
0 голосов
/ 25 ноября 2018

недавно я пытался выяснить, как преобразовать эту функцию, написанную на c #, в node.js, я очень долго пытался и смотрю на очень много вопросов, чтобы выяснить, как это сделать.6 или 7 часов, и мне не повезло, код, который я пытаюсь преобразовать в узел, является функцией шифрования, которая использует методы с битами uint и ulong для шифрования int, теперь я пришел к stackoverflow, чтобы попросить о помощи, так как я 'очень долго пытался и не нашел ни ответов, ни решений.Я старался изо всех сил, чтобы объяснить, что делает функция, извините, если это трудно понять.Вот код, который я пытался преобразовать.если вам удастся преобразовать это, я был бы признателен, если бы вы могли объяснить мне, как вы это сделали и как я мог бы сделать это сам в будущем.Спасибо

private static ulong teaEncrypt(ulong EncryptNum)
{
    uint[] numArray = new uint[4]
    {
        1519839710U,
        2072041700U,
        3432422232U,
        731448588U
    };
    uint num1 = (uint) (EncryptNum & (ulong) uint.MaxValue);
    uint num2 = (uint) (EncryptNum >> 32);
    uint num3 = 0;
    for (int index = 0; index < 32; ++index)
    {
        num3 += 3523417902U;
        num1 += (uint) (((int) num2 << 9) + (int) numArray[0] ^ (int) num2 + (int) num3 ^ (int) (num2 >> 5) + (int) numArray[1]);
        num2 += (uint) (((int) num1 << 9) + (int) numArray[2] ^ (int) num1 + (int) num3 ^ (int) (num1 >> 5) + (int) numArray[3]);
    }
    return (ulong) num2 << 32 | (ulong) num1;
}

Вот моя попытка конвертировать код в node.js

var uint32 = require('uint32')

var numArray =
[
    1519839710,
    2072041700,
    3432422232,
    731448588
]

function encrypt(EncryptNum)
{
    //const buf = Buffer.allocUnsafe(8);

    var encnum32 = uint32.toUint32(EncryptNum)
    var num1 = uint32.toUint32((encnum32 & 4294967295))
    //console.log(num1)
    var num2 = uint32.toUint32((encnum32 >> 32))
    //console.log(num2)
    var num3 = 0

    for (i = 0; i < 32; i++) {
        //console.log("1     " + uint32.toUint32(num2 << 9))
        //console.log("2     " + buf.writeInt32BE(num2, 0))
        num3 += 3523417902;
        num1 += uint32.toUint32(((num2 << 9) + numArray[0] ^ num2 + num3 ^ (num2 >> 5) + numArray[1]))
        num2 += uint32.toUint32(((num1 << 9) + numArray[2] ^ num1 + num3 ^ (num1 >> 5) + numArray[3]))
    }

    return num2 << 32 | num1
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...