1*e7b1675dSTing-Kang Chang# Python hybrid encryption example 2*e7b1675dSTing-Kang Chang 3*e7b1675dSTing-Kang ChangThis example shows how to encrypt data with Tink using hybrid encryption. 4*e7b1675dSTing-Kang Chang 5*e7b1675dSTing-Kang ChangIt demonstrates the basic steps of using Tink, namely loading key material, 6*e7b1675dSTing-Kang Changobtaining a primitive, and using the primitive to do crypto. 7*e7b1675dSTing-Kang Chang 8*e7b1675dSTing-Kang ChangThe key material was generated with Tinkey: 9*e7b1675dSTing-Kang Chang 10*e7b1675dSTing-Kang Chang```shell 11*e7b1675dSTing-Kang Chang$ tinkey create-keyset \ 12*e7b1675dSTing-Kang Chang --key-template DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_256_GCM \ 13*e7b1675dSTing-Kang Chang --out-format JSON --out hybrid_test_private_keyset.json 14*e7b1675dSTing-Kang Chang 15*e7b1675dSTing-Kang Chang$ tinkey create-public-keyset --in hybrid_test_private_keyset.json \ 16*e7b1675dSTing-Kang Chang --in-format JSON --out-format JSON --out hybrid_test_public_keyset.json 17*e7b1675dSTing-Kang Chang``` 18*e7b1675dSTing-Kang Chang 19*e7b1675dSTing-Kang Chang## Build and Run 20*e7b1675dSTing-Kang Chang 21*e7b1675dSTing-Kang Chang### Bazel 22*e7b1675dSTing-Kang Chang 23*e7b1675dSTing-Kang Chang```shell 24*e7b1675dSTing-Kang Chang$ git clone https://github.com/google/tink 25*e7b1675dSTing-Kang Chang$ cd tink/python/examples 26*e7b1675dSTing-Kang Chang$ bazel build ... 27*e7b1675dSTing-Kang Chang``` 28*e7b1675dSTing-Kang Chang 29*e7b1675dSTing-Kang ChangYou can then encrypt a file: 30*e7b1675dSTing-Kang Chang 31*e7b1675dSTing-Kang Chang```shell 32*e7b1675dSTing-Kang Chang$ echo "some data" > testdata.txt 33*e7b1675dSTing-Kang Chang$ ./bazel-bin/hybrid/hybrid --mode encrypt \ 34*e7b1675dSTing-Kang Chang --keyset_path ./hybrid/hybrid_test_public_keyset.json \ 35*e7b1675dSTing-Kang Chang --input_path testdata.txt --output_path testdata.txt.encrypted 36*e7b1675dSTing-Kang Chang``` 37*e7b1675dSTing-Kang Chang 38*e7b1675dSTing-Kang ChangOr decrypt the file with: 39*e7b1675dSTing-Kang Chang 40*e7b1675dSTing-Kang Chang```shell 41*e7b1675dSTing-Kang Chang$ ./bazel-bin/hybrid/hybrid --mode decrypt \ 42*e7b1675dSTing-Kang Chang --keyset_path ./hybrid/hybrid_test_private_keyset.json \ 43*e7b1675dSTing-Kang Chang --input_path testdata.txt.encrypted --output_path testdata.txt.decrypted 44*e7b1675dSTing-Kang Chang$ diff testdata.txt testdata.txt.decrypted 45*e7b1675dSTing-Kang Chang``` 46