tl;dr: Go to the very last codeblock, just under the bold text that says "This is the full command I would use in my Debian 12".
It's possible to do this with a single pipeline.
Concatenate the input file and the output from a source of 0xFF bytes, then only use dd to stop writing to the output file after 100 KiB. This can be done in two ways:
# flawed, keep reading
{ cat inputFile.bin && </dev/zero LC_ALL=C tr '\000' '\377'; } | dd ibs=1k count=100 of=paddedFile.bin
# flawed, keep reading
</dev/zero LC_ALL=C tr '\000' '\377' | cat inputFile.bin - | dd ibs=1k count=100 of=paddedFile.bin
I find the first syntax better because when read from left to right it properly shows data flow:
inputFile.bin + what tr prints → paddedFile.bin of the desired size.
The second syntax starts from tr, so it's less elegant in this matter.
Both commands are flawed because dd may read less than ibs and still increase the count. The first command will most likely suffer from this, the second command may be lucky and not suffer by chance; still both may suffer. The only POSIX way to fix this is to use ibs=1:
# OK, portable
… | dd ibs=1 count=102400 of=paddedFile.bin
where … denotes the pre-dd fragment of the pipeline from the first or from the second flawed command (both will work fine now, the flaw was from dd).
If your dd supports iflag=fullblock then this will be OK (but not POSIX):
# OK, not portable
… | dd ibs=1k count=100 of=paddedFile.bin iflag=fullblock
Or if your head supports -c (also not POSIX) then you can use head instead of dd:
# OK, not portable
… | head -c 102400 > paddedFile.bin
Your head may even support -c 100K. This is the full command I would use in my Debian 12:
# OK, not portable, quite elegant
{ cat inputFile.bin && </dev/zero LC_ALL=C tr '\000' '\377'; } | head -c 100K > paddedFile.bin
Note that any non-flawed command in this answer produces paddedFile.bin of the size of exactly 100 KiB (unless a fatal error like access denied or so occurs). This is true even if inputFile.bin is larger than 100 KiB.