Uh oh!
There was an error while loading. Please reload this page.
Added AES-256 encrypted parquet generated from parquet-java - #102
Conversation
hsiang-c
commented
Feb 19, 2026
cc @adamreeve |
adamreeve
commented
Feb 19, 2026
Thanks @hsiang-c! Can you please update the data/README.md file and document the keys that have been used in these files? There's an existing section about the encrypted files at https://github.com/apache/parquet-testing/blob/master/data/README.md#encrypted-files |
I've checked I can read these files with C++ Parquet. How annoying would it be to make the data match what's in the existing encrypted files in this repository? It would greatly simplify adding a C++ test for these if the data is the same, then I could reuse the existing test functions, but it's probably OK if the data is different. |
@adamreeve Thanks for the pointer, I'll try to reproduce matched data. |
I generated the test data again using a modified Parquet Java's schema (see below) and publicstaticfinalStringBOOLEAN_FIELD_NAME = "boolean_field";
publicstaticfinalStringINT32_FIELD_NAME = "int32_field";
publicstaticfinalStringINT64_FIELD_NAME = "int64_field";
publicstaticfinalStringINT96_FIELD_NAME = "int96_field";
publicstaticfinalStringFLOAT_FIELD_NAME = "float_field";
publicstaticfinalStringDOUBLE_FIELD_NAME = "double_field";
publicstaticfinalStringBINARY_FIELD_NAME = "ba_field";
publicstaticfinalStringFIXED_LENGTH_BINARY_FIELD_NAME = "flba_field";
privatestaticfinalMessageTypeSCHEMA = newMessageType(
"schema",
newPrimitiveType(REQUIRED, BOOLEAN, BOOLEAN_FIELD_NAME),
Types.required(INT32).as(LogicalTypeAnnotation.timeType(true, MILLIS)).named(INT32_FIELD_NAME),
newPrimitiveType(REPEATED, INT64, INT64_FIELD_NAME),
Types.required(INT96).named(INT96_FIELD_NAME),
newPrimitiveType(REQUIRED, FLOAT, FLOAT_FIELD_NAME),
newPrimitiveType(REQUIRED, DOUBLE, DOUBLE_FIELD_NAME),
newPrimitiveType(OPTIONAL, BINARY, BINARY_FIELD_NAME),
Types.required(FIXED_LEN_BYTE_ARRAY).length(FIXED_LENGTH).named(FIXED_LENGTH_BINARY_FIELD_NAME));Please give it a try, thanks. |
adamreeve
commented
Mar 1, 2026
Thanks @hsiang-c. It looks like the new data is very close to what's in the existing files but the int96 timestamp values are different. I get differences for that column if I try to use the C++ test utilities: I can't see where this comes from in the Java code, it looks like it's not part of On the C++ side this column is generated by And can you also please add a note about the encryption keys used to the README (https://github.com/apache/parquet-testing/blob/master/data/README.md#encrypted-files). I've pushed a branch with my changes to C++ parquet to apache/arrow@main...adamreeve:arrow:test_aes256_keys (probably needs some refactoring before I could make a PR with this, but it's enough to test the files). |
adamreeve
commented
Mar 3, 2026
I still see some differences in the int96 column, it looks like an endianness difference? |
hsiang-c
commented
Mar 3, 2026
@adamreeve Sorry about that, fixed endianness now. |
adamreeve
commented
Mar 4, 2026
(I don't have write permissions in this repository though, maybe @alamb can take a look) |
wgtmac
commented
Mar 4, 2026
ggershinsky
left a comment
There was a problem hiding this comment.
Thanks @hsiang-c and @adamreeve
hsiang-c
commented
Mar 4, 2026
Thank you @adamreeve and @ggershinsky@wgtmac |
Context
AES_256_GCMalgorithm in [parquet] Allow more encryption algorithms arrow-rs#9203Data Preparation
withPageWriteChecksumEnabled(false)so that arrow-rs can read it w/o issue.