• Как перенести объект из JS в другие языки?

    @GrayHorse
    в каком виде CryptoJS принимает в себя инстанс объекта самого себя и что он хеширует, чтобы повторить этот метод используя другие инструменты


    Все криптографические алгоритмы работают с байтами. CryptoJS используется абстракцию в виде класса "WordArray" для представления байтов, т.к. это старая библиотека, написанная, когда не было "ArrayBuffer".

    мне надо чтобы оно НЕ РАБОТАЛО также как и НЕ РАБОТАЕТ в js,

    Оно работает. Причем правильно.

    неужели по Вашему я могу переместиться во времени и пространстве к программисту, который когда-то захешировал слово таким методом и сказать ему "эй, ты хешируешь объект, не надо, хешируй строку" и дать ему этот код?

    На что тот программист бы ответил: "Не неcи чушь".
    И будет прав.

    Т.к. в его случает программа берет байты из строки и хешерует их, потом опять хеширует их же и т.д:
    SHA512(
            SHA512(
                    SHA512("hello".getBytes()) 
            )
    ).toString("hex");

    Для вывода в консоль предстaвляет их в виде хекс строки.

    ---

    Хеши же от вывода якобы той программы на C++:
    SHA512(
            SHA512(
                    SHA512("hello".getBytes()).toString("hex").getBytes()
            ).toString("hex").getBytes()
    ).toString("hex");

    Ничего не смущает? Что здесь cчитается не то же самое.

    ---

    чтобы повторить этот метод используя другие инструменты


    Другие инструменты в виде Java:

    import java.math.BigInteger;
    import java.nio.charset.StandardCharsets;
    import java.security.*;
    
    public class Main {
        public static void main(String[] args) throws NoSuchAlgorithmException {
            byte[] bytesOfMessage = "hello".getBytes(StandardCharsets.UTF_8);
            MessageDigest SHA512 = MessageDigest.getInstance("SHA512");
    
            byte[] digest = SHA512.digest(bytesOfMessage);
            Main.log(digest);
            for (int i = 0; i < 4; i++) {
                digest = SHA512.digest(digest);
                Main.log(digest);
            }
        }
        private static void log(byte[] digest) {
            var hex = new BigInteger(1, digest).toString(16);
            if (hex.length() % 2 == 1) {
                hex = "0" + hex;
            }
            System.out.println(hex);
        }
    }


    Шок! Вывод такой же и у "неправильного" CryptoJS. Банковские приложения в опасносте!

    ---

    Тема — кринж.
    Ответ написан
    1 комментарий
  • Как перенести объект из JS в другие языки?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Не трогая уже заранее кривую реализацию на js, сделать это невозможно. Увы. Хеш может вообще зависеть от движка js и его версии, от аппаратно-програмной платформы, так как структура объекта не факт что одинакова в разных реализациях, что может давать неодиаковые конечные результаты.

    Теоретически, если поборость последнее, то есть неодинаковый результат в разных условиях (путём запуска кода в предсказуемо одинаковых), то можно, например, оформить хеширующий микросервис, который будет получать данные и хешировать их по кривому алгоритму. Но лучше бы, конечно, этой фигнёй не страдать, а исправить изначальную проблему. Это как заболевания генетического происхождения: лечить их практически невозможно, потому что у человека уже миллиарды неверных копий ДНК в организме, которые поздно исправлять.
    Ответ написан
    1 комментарий
  • Python vs C++ что достойно внимания?

    @o_f
    Веб-аналитик, SEO, контекстная реклама
    На работу сейчас требуются как питонисты, так и С#. Дальше вам напишут, что перспективно питон, нод, джаваскрипт, руби может быть. Несложно было увидеть эти ответы в других таких же вопросах.
    Только какое отношение это имеет сейчас к вам? Вам 15... Всего 15 лет.
    На работу через год вам не устраиваться, на фрилансе вас отожмут более взрослые ребята или обидит первый же заказчик и вы навсегда возненавидите этот способ работы.
    Ваши перспективы сейчас - это образование, это английский, это математика.
    И пишите для себя все, что хотите и на чем хотите, в свободное время. Хотите сайт написать - посмотрите на пхп и питон иже с ними. Мобилки? Ну джаву.
    Когда вы выучитесь в универе на дворе будет 2021-22гг. И какой язык будет востребован в том году - сейчас никто не скажет.
    Даже если за спиной у вас будет 10 проектов "для себя" некоммерческих - на работу вас возьмут только джуниором на последних курсах универа или после него. В любом случае эту ступень пройти придется. Сразу мидла и сеньера никто не даст мальчику в 22 года.
    Так скажите, о каких перспективах вы говорите?
    Ответ написан
    3 комментария
  • Python vs C++ что достойно внимания?

    AcidBat
    @AcidBat
    C#
    Язык - всего лишь инструмент. Главное - голова.
    Учите саму архитектуру ЭВМ и особенности языка, на котором собираетесь писать, чтобы использовать его максимально продуктивно.
    И как это Java без изюминки? А как же полноценное ООП? А сборщик мусора?
    К слову, если вы владеете английским на разговорном уровне, то и на C++ должны писать без проблем, потому что сам его создатель считал, что английский сложнее C++.
    Ответ написан
    Комментировать
  • Python vs C++ что достойно внимания?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    начни с PyQT, выучишь и Питон и плюсы
    Ответ написан
    Комментировать
  • Как начать познание информационной безопасности?

    ranebull
    @ranebull
    Можно начать с просмотра тех же видео от Яндекс КИТ (Курсы Информационных Технологий):
    Безопасность Unix-подобных ОС
    Криптография, шифрование
    Обзорная лекция по безопасности
    Сетевая безопасность
    Информационная безопасность
    Безопасность информационных систем
    Информационная безопасность
    Безопасность информационных систем
    Из книжек можно прочитать Андрей Бирюков: Информационная безопасность: защит...
    На том же Хабре можно пролистать раздел ИБ, чтобы понять, что можно выбрать
    InfoSecurity
    Из общего, думаю, уже можно будет понять, какими прикладными вещами заниматься.
    Ответ написан
    5 комментариев