PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/@hashgraph/cryptography/src/primitive

Просмотр файла: aes.native.js

import CryptoJS from "crypto-js";
import * as hex from "../encoding/hex.js";

export const CipherAlgorithm = {
    Aes128Ctr: "AES-128-CTR",
    Aes128Cbc: "AES-128-CBC",
};

/**
 * @param {string} algorithm
 * @param {Uint8Array} key
 * @param {Uint8Array} iv
 * @param {Uint8Array} data
 * @returns {Promise<Uint8Array>}
 */
export function createCipheriv(algorithm, key, iv, data) {
    let mode;

    switch (algorithm.toUpperCase()) {
        case CipherAlgorithm.Aes128Cbc:
            mode = CryptoJS.mode.CBC;
            break;

        case CipherAlgorithm.Aes128Ctr:
            mode = CryptoJS.mode.CTR;
            break;

        default:
            throw new Error("(BUG) non-exhaustive switch statement");
    }

    const data_ = CryptoJS.enc.Hex.parse(hex.encode(data));
    const key_ = CryptoJS.enc.Hex.parse(hex.encode(key.slice(0, 16)));
    const cfg_ = { iv: CryptoJS.enc.Hex.parse(hex.encode(iv)), mode };

    return Promise.resolve(
        hex.decode(
            CryptoJS.AES.encrypt(data_, key_, cfg_).toString(
                CryptoJS.format.Hex
            )
        )
    );
}

/**
 * @param {string} algorithm
 * @param {Uint8Array} key
 * @param {Uint8Array} iv
 * @param {Uint8Array} data
 * @returns {Promise<Uint8Array>}
 */
export function createDecipheriv(algorithm, key, iv, data) {
    let mode;
    switch (algorithm) {
        case CipherAlgorithm.Aes128Cbc:
            mode = CryptoJS.mode.CBC;
            break;

        case CipherAlgorithm.Aes128Ctr:
            mode = CryptoJS.mode.CTR;
            break;

        default:
            throw new Error("(BUG) non-exhaustive switch statement");
    }

    const key_ = CryptoJS.enc.Hex.parse(hex.encode(key.slice(0, 16)));
    const iv_ = CryptoJS.enc.Hex.parse(hex.encode(iv));

    const params = CryptoJS.lib.CipherParams.create({
        ciphertext: CryptoJS.enc.Hex.parse(hex.encode(data)),
        iv: iv_,
        key: key_,
        algorithm: CryptoJS.algo.AES,
        blockSize: 4,
    });

    return Promise.resolve(
        hex.decode(
            CryptoJS.AES.decrypt(params, key_, { iv: iv_, mode }).toString(
                CryptoJS.enc.Hex
            )
        )
    );
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!