Kryptos
com.kryptos.android
Zapstore _@zapstore.dev Republished from GitHub / F-Droid by the Zapstore main account.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Sep 20, 2026 2.4> [!IMPORTANT] > Installing the new version is recommended. Kryptos 2.4 is not compatible with older versions. ## New features - Brazilian Portuguese - The language switch key is now a globe key (you can also switch keyboards by holding the globe key) - The iOS app icon is now native - Libraries updated to the latest versions - Links, email addresses, and phone numbers in decrypted text can now be copied
More…
- Vibration mode setting - Key text size setting - Key press enlargement setting - The cursor in the keyboard input field can be moved by dragging with your finger - Comma key instead of the emoji key; emoji are now available by holding the comma key - Chats can now be included in backups - Option to disable automatic capitalization - Settings are now stored in an encrypted file - Third-party keyboards no longer suggest words in Kryptos fields - Passwords in "Password" and "Photo" modes must now be at least 6 characters long - Code entry is locked after 5 incorrect attempts - The keyboard and on-screen decryption are locked 5 minutes after leaving the app - When using "Trap Password", the keyboard is hidden, on-screen decryption is disabled, and access to the camera and microphone is blocked - Other changes ## Fixes - Key flickering when moving the cursor by holding the space bar - Disappearing messages were deleted with a delay - The lock could be bypassed by setting the clock back - The locked keyboard displayed profiles and contacts and allowed switching profiles - The "Storage unavailable" screen could erase everything with a single tap without confirmation - On-screen decryption displayed text on the locked device - Text from disappearing messages remained in the cache - The keyboard draft remained visible after locking - The keyboard could remember words from encrypted messages - File names revealed whether codes had been set - Windows and menus were not protected against being overlaid by other apps - The app could freeze when handling a large message - The mask key is no longer derived from public fingerprints - Other fixes --- ## Downloads | File | Size | SHA-256 | | --- | --- | --- | | `Kryptos.apk` | 25 899 729 | `74c903e4b9493fdc6ad5a94b7eded9fd4f00a6407ccdd14c65cbf760befb086a` | | `Kryptos.ipa` | 27 159 680 | `10ad030b01852130ce829095cd6ff849afb3992d000bd080a9d24196d2edf187` | The APK is built in the F-Droid buildserver container and signed with the same key as before, so it installs over an existing copy. The IPA is unsigned. - Sep 2, 2026 2.3.3# Kryptos 2.3.3 ## New features - Persian language - Automatic clipboard clearing is now 1 minute by default - The encryption icon on the keyboard has been changed when “Send after encryption” mode is enabled - When screen recording or broadcasting, Kryptos hides the conversation and shows a placeholder - Before sending decrypted text to another app, Kryptos now asks for confirmation - Encryption buttons are disabled in password input fields
More…
- When decryption is disabled on screen, the service itself is now also disabled; previously, it continued running in the background - Voice input has been added to the keyboard - The chat header now displays the contact’s key - When scrolling up through the conversation, a button to return to the latest message appears - Text from Kryptos screens is no longer passed to Android system suggestions - “How to use” on the conversation screens is now a link - On Android, a “Do not pause the app” option has been added under “Privacy - On screen” - Keyboards have been adjusted to the system size. Larger letters, taller keys, wider spacing - Double-tapping the period on the keyboard inserts a comma (disabled by default). This can be changed in the keyboard settings in the app - App lock has been redesigned ## Bug fixes - If you switch to another app immediately after pressing “Encrypt”, the text is no longer inserted into it - The public key is no longer automatically removed from the clipboard - Large photos no longer cause the app to close when extracting a message from them - A message decrypted by the keyboard no longer disappears from the conversation - App lock immediately revokes the keyboard’s access to encryption; previously, access remained for several more minutes - The delay after entering an incorrect code can no longer be reset by restarting the app - Automatic clipboard clearing no longer deletes data copied in other apps - The “Copy” button in the on-screen decryption panel now correctly copies the text - The keyboard no longer suggests or remembers words in fields for secret phrases and one-time codes - The keyboard no longer reports that steganography is unavailable if the message was actually hidden - Turning the clock back no longer allows decrypted text to remain in memory longer than intended - On-screen decryption no longer lags on screens with a large amount of text - Interrupted panic wipe no longer leaves the app on the recovery screen - A deleted PGP key no longer reappears after restarting the app - The keyboard no longer lags in long conversations - When launching Kryptos, it no longer contacts Google services to load the emoji font - The emoji panel opens correctly again after switching between light and dark themes - Re-adding a contact with the same saved key no longer permanently breaks the conversation in one direction - When decryption fails, the app now states the reason if the key has already been used or has expired, instead of displaying a message about an incorrect contact - An error in a background task no longer crashes the app together with the keyboard - Other fixes --- ## Downloads | File | Size | SHA-256 | | --- | --- | --- | | `Kryptos.apk` | 24 362 620 | `bad43ef5adfa448aa638deff5c6cc213fc9c65e0df7b855b568ae04fd84b0926` | | `Kryptos.ipa` | 18 858 580 | `9d6f78ceed3f476d73ebc4e8d5ff442ae3c1f65dd04e1f61dce869d34a7c9e30` | The APK is built in the F-Droid buildserver container and signed with the same key as before, so it installs over an existing copy. The IPA is unsigned. - Aug 17, 2026 2.3.2## What is new - Chinese: the interface and a keyboard layout with pinyin input. - Profanity, insults and potentially dangerous words are out of all three text steganography modes, in English, Russian and German. 197 words were replaced with neutral ones, so each language still holds 4,096 words. - Keyboard: the Paste and Clear buttons are bigger and sit in one row, the message field size is adjustable, and the Kryptos badge can be hidden. - Send after encrypting now works in messengers that send with their own button. It needs the on-screen decryption service, which Android switches off on update. - Profiles and contacts can be renamed, a long press on a message opens a menu with copy and delete, and a deleted message is wiped completely. - A profile with unreadable storage no longer takes the app down: it opens on a working profile and names the one that is unavailable. ## Fixes
More…
Around twenty, among them: send after encrypting did not send in messengers with their own button, the keyboard closed after sending, switching to a profile with damaged storage closed the app and left it on the erase-everything screen, the app could create a key over existing data and make it unreadable, the password stayed in memory after the key was derived, hiding a message in a photo used 80 MB more memory than needed. > **Breaking change.** Covers made by the ordinary-words and smart-sentences steganography modes cannot be read by versions before 2.3.2. Both sides have to update. --- # Русская версия ## Нововведения - Китайский язык: интерфейс и раскладка клавиатуры с вводом по пиньиню. - Из всех трёх режимов текстовой стеганографии убраны матерные, оскорбительные и потенциально опасные слова на английском, русском и немецком. 197 слов заменены нейтральными, объём остался 4096 слов на язык. - Клавиатура: кнопки «Вставить» и «Очистить» стали крупнее и встали в один ряд, размер поля сообщения настраивается, значок Kryptos можно отключить. - Отправка после шифрования заработала в мессенджерах, которые отправляют собственной кнопкой. Нужна включённая служба расшифровки на экране, после обновления Android её выключает. - Профили и контакты можно переименовать, долгое нажатие на сообщение открывает меню с копированием и удалением, удалённое сообщение стирается полностью. - Профиль с нечитаемым хранилищем больше не роняет приложение: оно открывается на рабочем профиле и сообщает, какой профиль недоступен. ## Исправления багов Около двадцати, среди них: отправка после шифрования не работала в мессенджерах со своей кнопкой, клавиатура закрывалась после отправки, переключение на профиль с повреждённым хранилищем закрывало приложение и оставляло его на экране полного стирания, приложение могло создать ключ поверх существующих данных и сделать их нечитаемыми, пароль оставался в памяти после вычисления ключа, скрытие сообщения в фото занимало на 80 МБ больше памяти, чем нужно. > **Ломающее изменение.** Обложки режимов «обычные слова» и «умные предложения» не читаются версиями до 2.3.2. Обновиться нужно обеим сторонам. --- ## Downloads | File | Size | SHA-256 | | --- | --- | --- | | `Kryptos.apk` | 23 732 162 | `66c6fbf2f38013d6a2020e4324d4cc80e71559299f74fe66a8577bef68340f77` | | `Kryptos.ipa` | 18 190 837 | `8c95a263b3d2d88e8b9b94df05ae7d0e360dc4ba9f9c98f3a28e96387c33a43b` | The APK is built in the F-Droid buildserver container and signed with the same key as before, so it installs over an existing copy. The IPA is unsigned. - Aug 8, 2026 2.3.1## Changelog - Kryptos 2.3.1 **New** - The app is fully translated into German. - Keyboard: a QWERTZ layout with ä ö ü ß and its own dictionaries (40,000 frequent words, 177,000 word forms, 640 bigrams), with suggestions and autocorrect at the same level as Russian and English. Nouns are suggested capitalised, the case taken from a corpus that preserves it. - Steganography in all three modes: a 4,096-word list, "smart sentence" grammar with German word order and cases, and the random-letter mode. - The suggestion engine went from two languages to an arbitrary number. - The keyboard declares three layouts in the system input-language switcher, and picking one there switches the layout inside the keyboard. - Length masking now works in steganography too, in all three modes and all languages. Before this the switch did nothing once steganography was on, and the length of the text could be read straight off the length of the cover. - A new keyboard mode on Android: the padlock encrypts the message and sends it in the messenger right away, and a paper-plane badge appears on the padlock. Off by default, switched on in Settings -> Keyboard.
More…
- Other changes. **Fixed** - Confirmation popups ("Erase all" and ten more dialogs) no longer appear off to one side, they are anchored to the button that opened them. - On-screen stego decryption: a sender name that matched a dictionary word (Weber, Richter, Koch) broke parsing and the message would not decrypt. A second bug: a stray word at the end of the node (a timestamp, "Heute") threw away a message that had already been parsed. Added limited resynchronisation and anchoring on the sentence boundary. Affects every language, not only German. - The key preview was not covered by the screenshot block and showed even in password fields: on a screen recording of a "protected" keyboard the typed text could be read character by character. - An oversized photo or an oversized backup file crashed the app out of memory instead of returning a clear error. - The app stalled on launch once every two days, which is when the Signal keys were being rotated. - Opening the app with a long text in the clipboard made the interface lag. - Holding backspace with two fingers did not stop the deletion. - Switching a PGP key and deleting a recipient froze the screen. - The illustrated guide loaded every image at once, now they load as you scroll. - The keyboard held twice the memory it needed while loading dictionaries. - After a profile switch the keyboard showed the decryption from the previous profile. - A corrupted backup file wiped the working PGP keys instead of being rejected. - Length masking ate up to half the capacity of a photo while hiding nothing: the size of the shot does not depend on the length of the message. It has been removed from photos. - App launch waited for the whole message history to be parsed. - The message history was re-encrypted and written again on every launch, even when nothing had changed. - Picking a photo decoded the whole shot just for a thumbnail, and hiding and extracting ran on the main thread. - Key export and import and PGP operations froze with no progress indicator. - Regenerating a PGP key took the algorithm from the new-key form. - Deleting a PGP recipient happened without confirmation. - The pressed-key highlight disappeared from under the finger after the very first letter. - A message you had already read stopped opening again after the next 64 arrived. - The wording about being offline in the help was made precise: the app opens no network connections. - The green clipboard dot on the decrypt button in the keyboard could swallow the tap instead of the button. - Other changes. **IMPORTANT: the stego format has changed. Messages with length masking on will not open in older builds.** --- # Русская версия ## Changelog - Kryptos 2.3.1 **Нововведения** - Приложение полностью переведено на немецкий. - Клавиатура: раскладка QWERTZ с ä ö ü ß, собственные словари (40 000 частотных слов, 177 000 словоформ, 640 биграмм), подсказки и автозамена того же уровня, что для русского и английского. Существительные предлагаются с заглавной - регистр выведен из корпуса с сохранением регистра. - Стеганография во всех трёх режимах: список из 4096 слов, грамматика «умных предложений» с немецким порядком слов и падежами, режим случайных букв. - Движок подсказок переведён с двух языков на произвольное число. - Клавиатура объявляет три раскладки в системном переключателе языков ввода, и выбор там переключает раскладку в самой клавиатуре. - Маскировка длины сообщения теперь работает и в стеганографии, во всех трёх режимах и на всех языках. Раньше при включённой стеганографии переключатель не делал ничего, и длина текста читалась по длине обложки напрямую. - Новый режим клавиатуры на Android: замок шифрует сообщение и сразу отправляет его в мессенджере, а на самом замке появляется значок самолётика. По умолчанию выключен, включается в Настройки -> Клавиатура. - Прочие изменения. **Исправления багов** - Подтверждение действия («Стереть всё» и ещё 10 диалогов) больше не всплывает в стороне - привязано к кнопке, которая его вызвала. - Экранная расшифровка стего: имя отправителя, совпавшее со словом словаря (Weber, Richter, Koch), ломало разбор - сообщение не расшифровывалось. Второй баг: служебное слово в конце узла (время, «Heute») выбрасывало уже разобранное сообщение. Добавлена ограниченная ресинхронизация и фиксация по границе предложения. Касается всех языков, не только немецкого. - Превью нажатой клавиши не попадало под запрет скриншотов и показывалось даже в полях пароля: на записи экрана «защищённой» клавиатуры набранный текст читался посимвольно. - Слишком большое фото и слишком большой файл резервной копии роняли приложение по нехватке памяти вместо понятной ошибки. - Приложение подвисало при запуске раз в двое суток, в этот момент обновлялись ключи Signal. - Открытие приложения с длинным текстом в буфере обмена подтормаживало интерфейс. - Удержание backspace двумя пальцами не останавливало удаление. - Переключение ключа PGP и удаление получателя подвешивали экран. - Инструкции со скриншотами загружали все изображения сразу, теперь они подгружаются по мере прокрутки. - Клавиатура держала в памяти вдвое больше нужного при загрузке словарей. - Клавиатура после смены профиля показывала расшифровку предыдущего профиля. - Повреждённый файл резервной копии стирал действующие ключи PGP вместо отказа. - Маскировка длины расходовала до половины ёмкости фото, хотя ничего там не скрывала: размер снимка от длины сообщения не зависит. Из фото она убрана. - Запуск приложения ждал разбора всей переписки. - История переписки перешифровывалась и записывалась заново при каждом запуске, даже когда ничего не менялось. - Выбор фото распаковывал снимок целиком ради миниатюры, а шифрование и извлечение шли в основном потоке. - Экспорт и импорт ключей и операции PGP замирали без индикатора. - Перегенерация ключа PGP брала алгоритм из поля создания нового ключа. - Удаление получателя PGP выполнялось без подтверждения. - Подсветка нажатой клавиши пропадала из-под пальца после первой же буквы. - Уже прочитанное сообщение переставало открываться повторно после 64 следующих. - Формулировка об офлайне в справке уточнена: приложение не открывает сетевых соединений. - Зелёная точка буфера обмена на кнопке расшифровки в клавиатуре могла перехватить нажатие вместо самой кнопки. - Прочие изменения. **ВАЖНО: формат стего изменился. Сообщения с включённой маскировкой длины старые сборки не прочитают.** --- ## Downloads | File | Size | SHA-256 | |---|---|---| | `Kryptos.apk` | 22.2 MB | `4432bc651e923901a0dc401b87de201204293317f7078472703311ac96eef369` | | `Kryptos.ipa` | 16.6 MB | `d7b518fdc4cf836997ea42a3489c243b7af51119c374677acab10aa84acab986` | Android 8.0+, iOS 17+. The `.ipa` is unsigned, sign it on the device. Re-sign iOS with the same certificate as the previous install, otherwise the app comes up as a fresh one. - Aug 3, 2026 2.3## What is new - **Panic password.** A second password that, instead of unlocking Kryptos, wipes everything for good: profiles and private keys, chats, contact keys, PGP keys, the words the keyboard has learned, caches and settings. Afterwards the app opens empty, as if freshly installed. Set it in Privacy. It replaces the old panic PIN and can now be any password, not only digits. - **App passcode.** An ordinary code to unlock the app when you would rather not use biometrics. Both codes are typed into the same field, so the field itself tells nobody whether a panic password exists. - **Key backup.** Your own keys, your contacts' keys and your PGP keys go into a single password protected file that restores on another phone. It is encrypted with Argon2id and AES-256-GCM and looks like random data from the outside. Chats are not included. - **Interface settings.** Theme, an app language independent of the system one, and bottom tabs that can be switched off individually. - **In-app help.** A walkthrough built from real screenshots plus an FAQ, in Settings. - **A compose field button on the keyboard itself**, in sync with Settings both ways and hideable. - **Source code** section in About linking to this repository; contacts moved into a separate Developer section.
More…
## Cryptography - A password is turned into a key with **Argon2id** (64 MiB, t=3, p=1, the RFC 9106 profile). PBKDF2 is gone from the project entirely: password mode, photo steganography and the lock screen codes all derive through Argon2id. - The two implementations, the PHC reference library on iOS and BouncyCastle on Android, are checked against all seven official Argon2id test vectors and give byte-identical results, so a message crosses between the platforms unchanged. - **Photo steganography rebuilt.** No visible signature and no length at fixed positions, bits go only into textured areas of the picture with LSB matching, positions are spread by a keyed stream and the length is masked. A wrong password and a photo with nothing in it are indistinguishable. ## On-screen decryption (Android) and the keyboard - The main fix: in real messengers on-screen decryption often found no messages at all, because their text is marked as unimportant for screen readers. It finds them now. - The decrypted text appears exactly where the ciphertext is, centred on it and as wide as it, instead of a small window pinned to the top left corner. - The panel no longer rebuilds itself in a loop, it disappears about 300 ms after you leave a chat, and it does not show up for a message that has scrolled off the screen. - The expand button was redone and appears when the text is really cut off rather than when it is long. - The decryption window on the keyboard was rebuilt: the contact's name in the title, even padding and corners, and long text scrolls inside the window without closing it. ## Security - Erasing data and the panic password really do clear the settings now. The settings file used to survive untouched. - Code hashes live in encrypted storage and are destroyed by the wipe itself, so nothing is left to show that a code was ever set. - Checking a code on the lock screen takes the same time whatever codes exist, so the response time cannot reveal whether a panic password is set. After a few wrong tries the delay grows to 30 seconds. - The wipe destroys the storage key first, so a wipe interrupted halfway leaves data that nothing can decrypt any more. - The clipboard now clears itself in the background. It used to work only while the app was open. - Key backup refuses to export at all if any part of the keys cannot be read, and identifiers from an imported file are validated before they become names in storage. - The app signature check now fails closed, and strict biometrics is requested where the system supports it. ## Fixes - **Critical:** after a screen lock was removed the app could fail to start at all, because the system destroys the hardware key. It now shows a recovery screen with an explanation and a reset button. - Disappearing messages got a live timer, and expired messages are cleared from the keyboard and on-screen caches too. - Fixed a memory leak in the screen scanner, a race during the wipe, and a crash when hardware storage failed mid-wipe. - Typing no longer redraws the whole chat screen, and the device integrity check moved off the main thread. ## Upgrading from an older version - **Messages encrypted with a password before 2.2 and stego photos made before 2.3 can no longer be opened.** Both formats changed completely. - **A panic PIN set in an older version is erased by this update** and has to be set again as a panic password. - Chats, contacts, identities and PGP keys carry over untouched. - iOS only: sign the `.ipa` with the **same certificate** as your previous install, otherwise the keychain access group changes and Kryptos comes up as a fresh install. --- # Русская версия ## Новое - **Пароль-ловушка.** Второй пароль, который вместо разблокировки Kryptos безвозвратно стирает всё: профили и закрытые ключи, переписку, ключи контактов, PGP-ключи, выученные клавиатурой слова, кэши и настройки. После срабатывания приложение открывается пустым, как после установки. Задаётся в разделе «Конфиденциальность». Заменяет прежний паник-PIN, теперь это произвольный пароль, а не только цифры. - **Код приложения.** Обычный код для входа, если не хочется пользоваться биометрией. Оба кода вводятся в одно и то же поле, поэтому по самому полю нельзя понять, задан ли пароль-ловушка. - **Резервная копия ключей.** Свои ключи, ключи контактов и PGP-ключи выгружаются в один файл под паролем и восстанавливаются на другом телефоне. Файл зашифрован Argon2id и AES-256-GCM, снаружи неотличим от случайных данных. Переписка в копию не входит. - **Настройки интерфейса.** Тема, язык приложения независимо от системного и вкладки нижней панели, которые можно отключать по отдельности. - **Встроенная помощь.** Пошаговое руководство на реальных скриншотах и раздел вопросов и ответов в настройках. - **Кнопка поля ввода прямо на клавиатуре**, синхронизирована с настройками в обе стороны, при желании убирается. - **Раздел «Исходный код»** в «О программе» со ссылкой на этот репозиторий, контакты переехали в отдельный раздел «Разработчик». ## Криптография - Пароль превращается в ключ через **Argon2id** (64 МиБ, t=3, p=1, профиль RFC 9106). PBKDF2 удалён из проекта полностью: парольный режим, стеганография в фото и коды на экране блокировки идут через Argon2id. - Две реализации, эталонная библиотека PHC на iOS и BouncyCastle на Android, сверены с семью официальными тестовыми векторами Argon2id и дают побайтово одинаковый результат, так что сообщение свободно переходит с платформы на платформу. - **Стеганография в фото переделана.** Нет открытой сигнатуры и длины в фиксированных местах, биты идут только в текстурные участки снимка через LSB matching, позиции распределяются ключевым потоком, длина маскируется. Неверный пароль и фотография, в которой ничего нет, неотличимы. ## Расшифровка на экране (Android) и клавиатура - Главное исправление: в реальных мессенджерах расшифровка часто вообще не находила сообщений, потому что их текст помечен как неважный для озвучивания. Теперь находит. - Расшифрованный текст появляется ровно на месте шифртекста, по его центру и по его ширине, а не маленьким окошком в левом верхнем углу. - Панель больше не пересобирается по кругу, исчезает примерно через 300 мс после выхода из чата и не появляется для сообщения, уехавшего за край экрана. - Кнопка разворота полного текста переделана и появляется по факту обрезки, а не по длине сообщения. - Окно расшифровки на клавиатуре переделано: имя собеседника в заголовке, ровные отступы и скругления, длинный текст листается прямо в окне и прокрутка больше не закрывает его. ## Безопасность - Стирание данных и пароль-ловушка теперь действительно очищают настройки. Раньше файл настроек оставался нетронутым. - Хэши кодов лежат в зашифрованном хранилище и уничтожаются самим стиранием, поэтому следа о том, что код задавался, не остаётся. - Проверка кода на экране блокировки занимает одинаковое время при любых заданных кодах, так что по времени ответа нельзя понять, есть ли пароль-ловушка. После нескольких неверных попыток задержка растёт до 30 секунд. - Стирание уничтожает ключ хранилища первым, поэтому прерванное на середине стирание оставляет данные, которые уже нечем расшифровать. - Автоочистка буфера обмена заработала в фоне. Раньше она срабатывала только при открытом приложении. - Резервная копия ключей отказывается выгружаться, если хоть одна часть ключей не читается, а идентификаторы из импортируемого файла проверяются, прежде чем стать именами в хранилище. - Проверка подписи приложения при сбое считается непройденной, а не пройденной, и там, где система это умеет, запрашивается строгая биометрия. ## Исправления - **Критично:** после снятия блокировки экрана приложение могло не запускаться совсем, потому что система уничтожает аппаратный ключ. Теперь показывается экран восстановления с объяснением и кнопкой сброса. - У исчезающих сообщений появился живой таймер, а истёкшие сообщения вычищаются и из кэшей клавиатуры и экранной панели. - Устранены утечка памяти при обходе экрана, гонка при стирании и падение при сбое аппаратного хранилища во время стирания. - Набор текста больше не перерисовывает весь экран чата, проверка целостности устройства ушла с главного потока. ## Обновление с прежней версии - **Сообщения, зашифрованные паролем до 2.2, и стего-фото, сделанные до 2.3, больше не открываются.** Оба формата сменились полностью. - **Паник-PIN, заданный в прежней версии, стирается этим обновлением**, задайте его заново уже как пароль-ловушку. - Переписка, контакты, ключи и PGP-ключи переносятся без изменений. - Только для iOS: подписывайте `.ipa` **тем же сертификатом**, что и прошлую установку, иначе сменится группа доступа к keychain и Kryptos откроется как свежеустановленный. --- ## Downloads / Файлы | File | For | SHA-256 | |------|-----|---------| | `Kryptos.apk` | Android 8+, sideload | `a216ed97ef11da3f4ccfaa40cc66e2c4a1685e970b645be0e8ff26421cc01385` | | `Kryptos.ipa` | iOS 17+, unsigned, sign it yourself | `09b3f5bbb72e6dd79bcc09685231775ef89c91e4ee0fd951f3abf865192b0ead` | Also available from <https://datakeeper.pages.dev/kryptos>.