Many times, yes. It is pretty technical and a tad vague regarding the exact code.
I tried this pseudocode
A tagged hash is: SHA256( SHA256("TapTweak") ||
SHA256("F") ||
data
)
Returns hashlib object (can then use .digest() or hexdigest())
as so:
taptweek_hash1 = hashlib.sha256('TapTweak'.encode()).hexdigest()
#e80fe1639c9ca050e3af1b39c143c63e429cbceb15d940fbb5c5a1f4af57c5e9
taptweek_hash2 = hashlib.sha256('F'.encode()).hexdigest()
#f67ab10ad4e4c53121b6a5fe4da9c10ddee905b978d3788d2723d7bfacbe28a9
tagged_hash = hashlib.sha256(bytes.fromhex('e80fe1639c9ca050e3af1b39c143c63e429cbceb15d940fbb5c5a1f4af57c5e9' + 'f67ab10ad4e4c53121b6a5fe4da9c10ddee905b978d3788d2723d7bfacbe28a9' + '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798')).hexdigest()
### >> 56d0345a861392e020a0fecdf2c2cffda10b340171f4a31d827eb63e9ccddeac ### NOT GOOD
No luck, yet.
How does bitcoinutils do it?