کسی چیزی نگفت ولی با سعی و خطا خودم فهمیدم !
قضیه این هست که خروجی sha1 ۲۰ کاراکتری هست ولی چون خروجی اش شامل کاراکترهای غیر قابل چاپ هم می شود، نرم افزارها (مثل sha1sum) می آیند و کد هگز مربوط به اون کاراکتر رو چاپ می کنه که خب می دانیم که هربایت با دو کاراکتر هگز نمایش داده می شوند پس در نتیجه خروجی ۲۰ کاراکتری تبدیل به خروجی ۴۰ کاراکتری می شود.(خروجی sha1sum ۴۰ کاراکتری است) با این حساب الان همه چیز با هم جور در می یاد.
کسی اگر می خواد که تست کنه این کار ها رو به ترتیب بکنه
dd if=/dev/urandom of=/tmp/file.torrent bs=1 count=32768
بعد با نرم افزار ktorrent یک فایل تورنت ایجاد کنید و اندازه قطعات را ۳۲ کیلوبایت انتخاب کنید(البته با نرم افزارهای دیگه مثل mktorrent هم می شه)
بعد فایل تورنت را با okteta باز کنید (یا با hexdump -C ) وکد هگز مربوط به قطعه را (اگر دستورات را درست وارد کرده باشید یک قطعه بیشتر نخواهید داشت.) می تونید ببینید حالا با sha1sum از /tmp/file هش بگیرید و می بینید که با مقادیر اون قطعه (در okteta) با هم برابر هستند.
همه ی این حرف هام به زبان کد:
cd /tmp
dd if=/dev/urandom of=/tmp/file.torrent bs=1 count=32768
mktorrent -l 15 -a dd.dd /tmp/f
hexdump -C -s 139 /tmp/f.torrent
sha1sum /tmp/f