[ ← Home ]
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Spartan Camera

AES-256 Encryption Integration

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Project Showcase Copyright © 2026
LAST UPDATED: Oct, 2026
AUTHOR: ⊹ Gabb ⊹
VERSION: 1.4

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

+++ Role +++

Product Designer

My job here was to design a decryption flow for a new encryption system for our newest products.

The main challenge was making sure the mobile app and server could handle the encryption without permanently storing the encryption key anywhere.

This meant I had to map out how users would interact with encrypted images, when the app needed to decrypt them, and how we could keep the whole process mostly seamless for the user.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

+++ Description +++

This project focused on integrating encrypted images into the Spartan Camera app, allowing users to securely receive and decrypt transmitted images directly inside the app.

Originally requested by a government agency we work with, but the solution ended up being simple enough to include as part of the production firmware so it could be accessible to everyday users as well.

The full process can be found below.

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

[ 01 ] App Integration

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

The biggest challenge was making encryption work without making the entire app slower.

If every image had to go through the decryption process, we'd be adding extra processing time to basically everyone, including users who weren't even using encrypted photos.

Fuck that!

So instead of treating every image as encrypted by default, we needed a way for the app to know when decryption was actually necessary.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

+++ Solutions +++

We added a key to the API that tells the app whether the images coming from a camera require decryption.

This key is updated by the camera whenever its encryption setting is turned ON or OFF. That meant the app could check the API response and only run the decryption process when it actually needed to.

Simple!

Having this API key allowed us to run the decryption algorithm only when absolutely necessary, instead of adding a blanket loading time to the entire image browsing experience.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

+++ Impact +++

The final solution gave us a way to support encrypted images without making the encryption process everyone else's problem.

Users with encrypted photos could securely receive and view their images inside the app, while everyone else could continue using the app normally without an extra wait.

The cool thing is that most users won't even know the feature is there until they need it.

Kinda how security features should actually feel.