Разницы не в SHA1, а во входных данных. Синтаксис здесь-строки добавляет новую строку, как мы можем видеть с od
:
$ od -c <<< foo
0000000 f o o \n
Таким образом, в вашей команде git
вводом являются десять символов Apple Pie\n
.
Кроме того, двойные кавычки, которые вы использовали в строках здесь, не поддерживают символы обратной косой черты, такие как \n
или \nnn
, поэтому <<< "blob 9\0Apple Pie"
дает строку, содержащую обратную косую черту и ноль.Однако
printf
интерпретирует \0
как байт NUL и не добавляет завершающую новую строку, поэтому с добавленной новой строкой и фиксированной длиной мы должны получить ожидаемый результат:
$ printf 'blob 10\0Apple Pie\n' | sha1sum
23991897e13e47ed0adb91a0082c31c82fe0cbe5 -
Мы могли бы попытаться сделать то же самое со строкой здесь, используя кавычку $''
, которая поддерживает \0
как представление байта NUL, но это может не работать в все оболочки, так как байт NUL заканчивает строку. Например. Bash не может с этим справиться, zsh
может:
$ zsh -c "sha1sum <<< $'blob 10\0Apple Pie'"
23991897e13e47ed0adb91a0082c31c82fe0cbe5 -
Для вашей локальной и глобальной сети требуются отдельные / 64. Похоже, вы используете 2a01: 4f8: 162: xxxx :: / 64
с обеих сторон, что не сработает. Вам понадобится, например, 2a01: 4f8: 162: xxxx :: / 64
в глобальной сети и 2a01: 4f8: 162: yyyy :: / 64
в локальной сети с маршрутизацией. правильно настроить, чтобы адреса LAN проходили через ваш брандмауэр.