[ 
https://issues.apache.org/jira/browse/HBASE-27094?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

wenweijian updated HBASE-27094:
-------------------------------
    Description: 
in HFileBlockDefaultDecodingContext.prepareDecofing, we decoding data from 
onDiskBlock.

The onDiskBlock contains byte iv length, iv data and encrypted block data if 
cryptoContext is not null.

The encrypted block data contains two part, first part is the real encrypted 
block data, the second part is checksum.

when we the decrypt method(BlockIOUtils.readFullyWithHeapBuffer),the checkSum 
will be put into the decryptionStream. if we use others padding mode which 
likes pkcs5padding, the decrytion will throw an error "Input Length must be a 
multiple of 16 when decrypting with a padded cipher", because of the checkSum 
is not a multiple of 16.

so we need to remove the checksum when we doing decrytion. 

why we will not get error when we use AES/CTR/NOPPDING, because CTR is not 
sensitive about the block size. but the other alg such as CBC or ECB, they are 
sensitive about block size.

  was:
in HFileBlockDefaultDecodingContext.prepareDecofing, we decoding data from 
onDiskBlock.

The onDiskBlock contains byte iv length, iv data and encrypted block data if 
cryptoContext is not null.

The encrypted block data contains two part, first part is the real encrypted 
block data, the second part is checksum.

when we the decrypt method(BlockIOUtils.readFullyWithHeapBuffer),the checkSum 
will be put into the decryptionStream. if we use others padding mode which 
likes pkcs5padding, the decrytion will throw an error "Input Length must be a 
multiple of 16 when decrypting with a padded cipher", because of the checkSum 
is not a multiple of 16.

so we need to remove the checksum when we doing decrytion. 

why we will not get error when we use AES/CTR/NOPPDING, because CTR is not 
sensitive about the block size. but the other alg such as CBC/ECB, they are 
sensitive about block size.


> Encryption data contains checksum
> ---------------------------------
>
>                 Key: HBASE-27094
>                 URL: https://issues.apache.org/jira/browse/HBASE-27094
>             Project: HBase
>          Issue Type: Bug
>            Reporter: wenweijian
>            Priority: Minor
>
> in HFileBlockDefaultDecodingContext.prepareDecofing, we decoding data from 
> onDiskBlock.
> The onDiskBlock contains byte iv length, iv data and encrypted block data if 
> cryptoContext is not null.
> The encrypted block data contains two part, first part is the real encrypted 
> block data, the second part is checksum.
> when we the decrypt method(BlockIOUtils.readFullyWithHeapBuffer),the checkSum 
> will be put into the decryptionStream. if we use others padding mode which 
> likes pkcs5padding, the decrytion will throw an error "Input Length must be a 
> multiple of 16 when decrypting with a padded cipher", because of the checkSum 
> is not a multiple of 16.
> so we need to remove the checksum when we doing decrytion. 
> why we will not get error when we use AES/CTR/NOPPDING, because CTR is not 
> sensitive about the block size. but the other alg such as CBC or ECB, they 
> are sensitive about block size.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to