SHA1 mismatches on B2 with no_data_encryption = true

What is the problem you are having with rclone?

There's some sort of buggy interaction happening with B2 + no_data_encryption = true. When writing a file smaller than the chunk size, the upload fails with Failed to copy: Checksum did not match data received (400 bad_request) . When writing a chunked file, the upload succeeds but the read fails with Failed to copy: corrupted on transfer: SHA1 hashes differ

Run the command 'rclone version' and share the full output of the command.

rclone v1.75.0
- os/version: nixos 26.05 (64 bit)
- os/kernel: 6.18.40 (aarch64)
- os/type: linux
- os/arch: arm64 (ARMv8 compatible)
- go/version: go1.26.5
- go/linking: static
- go/tags: none

Which cloud storage system are you using? (eg Google Drive)

Backblaze B2

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone copy big.bin crypt:_test/ --b2-chunk-size 5M --b2-upload-cutoff 5M
rclone copy crypt:_test/big.bin ./dl/  

The rclone config contents with secrets removed.

[b2]
type = b2
account = XXX
key = XXX

[crypt]
type = crypt
remote = b2:XXX
filename_encryption = standard
directory_name_encryption = true
no_data_encryption = true
password = XXX
password2 = XXX

A log from the command with the -vv flag

$: head -c 5M /dev/urandom > small.bin
$: rclone copy small.bin crypt:_test/ --b2-chunk-size 5M --b2-upload-cutoff 5M -v
2026/08/09 16:21:24 ERROR : small.bin: Failed to copy: Checksum did not match data received (400 bad_request)
2026/08/09 16:21:24 ERROR : Attempt 1/3 failed with 1 errors and: Checksum did not match data received (400 bad_request)
2026/08/09 16:21:24 ERROR : small.bin: Failed to copy: Checksum did not match data received (400 bad_request)
2026/08/09 16:21:24 ERROR : Attempt 2/3 failed with 1 errors and: Checksum did not match data received (400 bad_request)
2026/08/09 16:21:25 ERROR : small.bin: Failed to copy: Checksum did not match data received (400 bad_request)
2026/08/09 16:21:25 ERROR : Attempt 3/3 failed with 1 errors and: Checksum did not match data received (400 bad_request)
2026/08/09 16:21:25 INFO  :
Transferred:   	       15 MiB / 15 MiB, 100%, 0 B/s, ETA -
Errors:                 1 (retrying may help)
Elapsed time:         1.8s

2026/08/09 16:21:25 NOTICE: Failed to copy: Checksum did not match data received (400 bad_request)

$: head -c 6M /dev/urandom > big.bin
$: rclone copy big.bin crypt:_test/ --b2-chunk-size 5M --b2-upload-cutoff 5M -v
2026/08/09 16:22:52 INFO  : big.bin: Copied (new)
2026/08/09 16:22:52 INFO  :
Transferred:   	        6 MiB / 6 MiB, 100%, 0 B/s, ETA -
Transferred:            1 / 1, 100%
Elapsed time:         0.2s

$: rclone $RC --config $CONF copy crypt:_test/big.bin ./dl/ -v
2026/08/09 16:24:23 ERROR : big.bin: Failed to copy: corrupted on transfer: SHA1 hashes differ want "20686305e2a9c71069d9c49129ad9e5fcdebc7f2" vs got "3a8e804a1c0b9fc43fa2fa02cd269fa22825ffa9"
2026/08/09 16:24:23 INFO  : big.bin.c08084f0.partial: Removing failed copy
2026/08/09 16:24:23 ERROR : Attempt 1/3 failed with 1 errors and: corrupted on transfer: SHA1 hashes differ want "20686305e2a9c71069d9c49129ad9e5fcdebc7f2" vs got "3a8e804a1c0b9fc43fa2fa02cd269fa22825ffa9"
2026/08/09 16:24:23 ERROR : big.bin: Failed to copy: corrupted on transfer: SHA1 hashes differ want "20686305e2a9c71069d9c49129ad9e5fcdebc7f2" vs got "3a8e804a1c0b9fc43fa2fa02cd269fa22825ffa9"
2026/08/09 16:24:23 INFO  : big.bin.c08084f0.partial: Removing failed copy
2026/08/09 16:24:23 ERROR : Attempt 2/3 failed with 1 errors and: corrupted on transfer: SHA1 hashes differ want "20686305e2a9c71069d9c49129ad9e5fcdebc7f2" vs got "3a8e804a1c0b9fc43fa2fa02cd269fa22825ffa9"
2026/08/09 16:24:23 ERROR : big.bin: Failed to copy: corrupted on transfer: SHA1 hashes differ want "20686305e2a9c71069d9c49129ad9e5fcdebc7f2" vs got "3a8e804a1c0b9fc43fa2fa02cd269fa22825ffa9"
2026/08/09 16:24:23 INFO  : big.bin.c08084f0.partial: Removing failed copy
2026/08/09 16:24:23 ERROR : Attempt 3/3 failed with 1 errors and: corrupted on transfer: SHA1 hashes differ want "20686305e2a9c71069d9c49129ad9e5fcdebc7f2" vs got "3a8e804a1c0b9fc43fa2fa02cd269fa22825ffa9"
2026/08/09 16:24:23 INFO  :
Transferred:   	       18 MiB / 18 MiB, 100%, 0 B/s, ETA -
Errors:                 1 (retrying may help)
Elapsed time:         0.2s

2026/08/09 16:24:23 NOTICE: Failed to copy: corrupted on transfer: SHA1 hashes differ want "20686305e2a9c71069d9c49129ad9e5fcdebc7f2" vs got "3a8e804a1c0b9fc43fa2fa02cd269fa22825ffa9"



Thanks for the report @arseneyr - this is indeed a bug.

What is happening is b2 is asking crypt for the sha1 to send with the upload and it obliges but sends the sha1 of the encrypted data which doesn't match.

I'm surprised no-one has noticed this before as it has been in the code since v1.54 when we implemented no_encryption.

Anyway please give this a try

v1.76.0-beta.10113.719509cae.fix-crypt-no-encrypt on branch fix-crypt-no-encrypt (uploaded in 15-30 mins)

Thanks for the quick turnaround @ncw ! I've verified that this build resolves my issue.

Thanks for testing @arseneyr

I've merged this fix for 1.74.1 it will be in the beta in 30 mins or so