Эти 2 переменные будут иметь одинаковое видимое содержимое
x_sign1="aabbccdd_and_somthing_else"
var1="...."
[........]
x_sign2=$(echo -n "${var1}${var2}${var3}" | shasum -a 256)
echo $x_sign2
====>
aabbccdd_and_somthing_else -
Обратите внимание на «-» в конце.
Однако их длина будет отличаться. Даже если x_sign2
не содержит символ новой строки. Для этого:
x_sign22=$(echo -n "${var1}${var2}${var3}" | shasum -a 256 | tr -d '\n')
Но:
echo ${#x_sign1}
====> 64
And:
И
echo ${#x_sign2}
====> 67
echo ${#x_sign22}
====> 67
Разница составляет 3 символа. Видимое содержимое идентично.
Кроме того, когда я делаю запрос через curl к REST API, которому требуется это значение подписи, x_sign1
всегда завершается успешно, тогда как x_sign2
- «неправильная подпись»
Почему? Как это исправить?