Перейти к содержимому

Вопрос

Привет, пишу либу для удобного скачивания файлов с raw-url/pastebin-id/github-repo
https://pastebin.com/PE5Jq501

респонс https://api.github.com/repos/USER/REPO/git/trees/BRANCH?recursive=1 содержит поля sha, хотелось бы получать хэш скачанных файлов что-бы сравнивать их с хэшем с ремоут репо да-бы добавить авто-обновление в загрузчик.

 

Скрытый текст

попытался сравнить хэш с гитхаба и хэш возвращаемый require("component").data.sha256, ничего адекватного не получилось
image.png.30eafdbef69840f8522baabff84759dc.png

image.png.37c50cf14331587c7a2476a82957ca24.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

Последний скриншот может свидетельствовать о сравнении строки с её шестнадцатеричным представлением. Они и не могут совпадать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как мне превратить шестнадцатеричное представление в строку для сравнения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, Belzebub сказал:

Как мне превратить шестнадцатеричное представление в строку для сравнения?

Предлагаю поступить наоборот:

sha256bin = component.data.sha256(text)

sha256hex = ""
for i=1,#sha256 do
  sha256hex=sha256hex..("%x"):format(sha256bin:byte(i))
end

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А какая версия sha используется на гитхабе?
Как бы не получилось так что я сравниваю sha1 с sha256 :D

image.png.5ce775ce32691c8ccd0711b260ef2b6d.pngimage.png.85ea345924bc3705266a1d4e202dff13.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, Belzebub сказал:

А какая версия sha используется на гитхабе?
Как бы не получилось так что я сравниваю sha1 с sha256

Это можно узнать по количеству символов. Для записи SHA-1 используется 40 шестнадцатеричных цифр, а для SHA-256 — 64 цифры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Значитс это sha1, странно что git юзает такую древность.
К сожалению карта данных из OC не умеет в sha1, получается надо юзать внешнюю либу?

Изменено пользователем Belzebub
typo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 12.12.2021 в 13:29, Belzebub сказал:

странно что git юзает такую древность

О смене хешей вроде в 2017 году задумались. Но не могу понять, сделали ли уже, чтобы можно было нормально работать с SHA-256.

 

Может быть, сработает вот этот фокус с репозиторием (но это не точно):

git convert-repo --to-hash=sha-256 --frobnicate-blobs --climb-subtrees \
       --liability-waiver=none --use-shovels --carbon-offsets

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Belzebub

1. Опечатка небольшая в 92 и 102 строках - reqire вместо require;

2. Прикольный кэш :) os.time() точно возвращает то, что надо?

Если нет, можно использовать такой же lastModified, но для какого-нибудь временного файла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, ProgramCrafter сказал:

@Belzebub

1. Опечатка небольшая в 92 и 102 строках - reqire вместо require;

2. Прикольный кэш :) os.time() точно возвращает то, что надо?

Если нет, можно использовать такой же lastModified, но для какого-нибудь временного файла.

оу, с os.time тупанул)
грёбанный разработчик опенкомпуктерс, зачем он убрал оригинальный os.time?(((

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 час назад, ProgramCrafter сказал:

О смене хешей вроде в 2017 году задумались. Но не могу понять, сделали ли уже, чтобы можно было нормально работать с SHA-256.

 

Может быть, сработает вот этот фокус с репозиторием (но это не точно):


git convert-repo --to-hash=sha-256 --frobnicate-blobs --climb-subtrees \
       --liability-waiver=none --use-shovels --carbon-offsets

 

git: 'convert-repo' is not a git command. See 'git --help'.
нема такого :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, Belzebub сказал:

грёбанный разработчик опенкомпуктерс, зачем он убрал оригинальный os.time?(((

Что значит убрал? Его и не было никогда в OpenComputers. И в ComputerCraft тоже никогда не было. И в документации об этом везде сказано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, eu_tomat сказал:

Что значит убрал? Его и не было никогда в OpenComputers. И в ComputerCraft тоже никогда не было. И в документации об этом везде сказано.

в lua то был.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
21 минуту назад, Belzebub сказал:

в lua то был.

В обычном Lua os.time возвращает время на компьютере.

 

В Lua на OpenComputers os.time точно также возвращает время на компьютере. Но не на реальном, а игровом компьютере, где в норме время идёт в 72 раза быстрее времени на сервере.

 

В общем, логика в таком выборе присутствует. На автора грех жаловаться: любой желающий может сделать форк с нужными ему возможностями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...