Skip to content

Сравнение файлов через SHA1 #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: develop
Choose a base branch
from

Conversation

thedemoncat
Copy link

  1. Добавил 2 метода:
  • ФС.ПолучитьСуммуФайлаSHA1(ПутьКФайлу)- Вычиcлсяет значение хеш-суммы (контрольной суммы) для указанного файлов по алгоритму SHA-1.
  • ФС.СравнитьФайлы(ПервыйФайл, ВторойФайл) - Сравнивает хеш-суммы 2-х переданных файлов
  1. Реализовал тесты получения хеш-суммы, а также сравнения файлов
  2. добавлены 3 текстовых файла для тестов
Функционал:
   Как разработчик
   Я хочу сравнивать бинарные файлы
   Что бы убедиться в их идентичности

Сценарий: Получение хеш-суммы SHA1 файла
   Допустим есть файл по пути "./tests/resources/ValidSum.txt"
   Когда я выполняю команду "ФС.ПолучитьСуммуФайлаSHA1(ПутьКФайлу)"
   Тогда получаю значение хеш-суммы "01b307acba4f54f55aafc33bb06bbbf6ca803e9a"

Сценарий: Сравнение двух файлов - файлы идентичные
   Допустим есть первый файл по пути "./tests/resources/ValidSum.txt"
   И есть второй файл по пути "./tests/resources/ValidSum1.txt"
   Когда я выполняю команду "ФС.СравнитьФайлы(ПервыйФайл , ВторойФайл)"
   Тогда получаю результат результат выполнения команды "Истина"

Сценарий: Сравнение двух файлов - файлы не равны
   Допустим есть первый файл по пути "./tests/resources/ValidSum.txt"
   И есть второй файл по пути "./tests/resources/NoValidSum.txt"
   Когда я выполняю команду "ФС.СравнитьФайлы(ПервыйФайл , ВторойФайл)"
   Тогда получаю результат результат выполнения команды "Ложь"

//
Функция ПолучитьСуммуФайлаSHA1(ПутьКФайлу) Экспорт

Если НЕ ФайлСуществует(ПутьКФайлу) Тогда
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

съехало форматирование

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

пустая строка мешает? Просто по файлу везде так сделано. Повторял увиденное, что было однообразно)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В односкрипте есть встроенные функции хеширования. https://oscript.io/syntax/page/%D0%A5%D0%B5%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%94%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Будет кроссплатформенно и на маке должно работать

Ответ = Команда.ПолучитьВывод();
Возврат СокрЛП(СтрПолучитьСтроку(СтрЗаменить(Ответ, " ", ""), 2));
Иначе
Команда.УстановитьКоманду("sha1sum");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А на macOs так же?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У меня нету мака. Не могу проверить(

Copy link
Member

@nixel2007 nixel2007 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.

@@ -3,4 +3,5 @@
.Версия("1.0.0")
.ВключитьФайл("Модули")
.ВключитьФайл("LICENSE")
.ВключитьФайл("README.md");
.ВключитьФайл("README.md")
.ЗависитОт("1commands", "1.5.0");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ФС - это "базовая" либа. Её стоит держать без зависимостей чтобы избежать неразрешимых циклов. Например, 1скоммандс больше не сможет использовать ФС, так как ФС будет зависеть от него

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это придется тащить методы из 1commands по работе с процессами( а там много чего и будут дубли кода. Вот думаю как обойти. на ум приходит только сделать отдельную библиотеку по работе с хеш-суммами.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Методы 1коммандс не нужны, в оскрипте есть встроенные средства получения SHA1

@artbear
Copy link
Member

artbear commented Nov 27, 2020

Закрываю ПР, т.к. @EvilBeaver уже писал, что в движке есть встроенные методы хеширования

@artbear artbear closed this Nov 27, 2020
@EvilBeaver
Copy link
Member

Нене, сам метод-то хороший, просто реализация немного не та. Я не вижу ничего плохого в helper-методе для сравнения по хешам

@EvilBeaver EvilBeaver reopened this Nov 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants