Modern desktop encryption app built with C# and Avalonia UI.
ChashApp lets you encrypt files, folders, and notes with a clean dark interface, multilingual UI, operation history, export tools, CLI support, and a Windows installer. The project was built as a portfolio-ready desktop product with real publish, packaging, and release flow.
ChashApp focuses on practical local encryption:
- encrypt and decrypt files with a user password
- encrypt a whole folder into a single
.chashcontainer - encrypt and decrypt notes directly inside the app
- verify encrypted containers
- export operation history to JSON or CSV
- publish and package the app like a real desktop product
The app targets Windows, Linux, and macOS.
The current UI supports English, Polish, Spanish, and German.
- AES-256-GCM encryption
- PBKDF2-SHA256, PBKDF2-SHA512, and Argon2id
- file, folder, and note encryption
- drag and drop support
- secure erase flow
- operation history with search and pagination
- recent files and quick actions
- CLI commands:
encrypt,decrypt,verify - portable mode support
- Windows installer with uninstall flow
- multilingual interface
- tests, smoke tests, benchmarks, publish scripts, and release workflow
Branding reference:
docs/brand-guide.md
- C#
- .NET 9
- Avalonia UI
- AES-256-GCM
- PBKDF2 / Argon2id
- xUnit
- Inno Setup
ChashApp/
├─ .github/ # CI / release workflow
├─ benchmarks/ # benchmark project
├─ docs/ # preview, branding, release notes
├─ installer/ # Inno Setup script and assets
├─ publish/ # publish scripts
├─ src/
│ └─ ChashApp/ # main desktop application
├─ tests/
│ └─ ChashApp.Tests/ # unit and UI smoke tests
├─ .gitignore
├─ ChashApp.sln
├─ global.json
└─ README.md
- Install .NET 9 SDK
- Open
ChashApp.sln - Restore packages
- Run the
ChashAppproject
dotnet run --project src/ChashApp/ChashApp.csproj -- encrypt sample.txt "ExamplePassword123!" argon2id
dotnet run --project src/ChashApp/ChashApp.csproj -- decrypt sample.txt.chash "ExamplePassword123!"
dotnet run --project src/ChashApp/ChashApp.csproj -- verify sample.txt.chash "ExamplePassword123!"dotnet test .\tests\ChashApp.Tests\ChashApp.Tests.csproj
.\publish\publish-win-x64.ps1
.\installer\build-installer.ps1Published app:
artifacts\publish\win-x64\ChashApp.exe
Installer:
artifacts\installer\ChashApp-Setup.exe
.\publish\publish-win-x64.ps1.\publish\publish-linux-x64.ps1.\publish\publish-osx-arm64.ps1After publishing the Windows build:
.\installer\build-installer.ps1The installer supports:
- desktop install flow
- uninstall flow
- Start Menu shortcuts
.chashfile association for the current user
dotnet test .\tests\ChashApp.Tests\ChashApp.Tests.csprojBenchmarks:
dotnet run -c Release --project .\benchmarks\ChashApp.Benchmarks\ChashApp.Benchmarks.csproj- encryption is based on AES-256-GCM
- key material is derived from the user password
- supported KDF options are PBKDF2-SHA256, PBKDF2-SHA512, and Argon2id
- files and notes are processed locally
- history does not store passwords
- lost passwords cannot be recovered
- secure erase reduces simple recovery risk, but should not be treated as an absolute guarantee on every drive or filesystem



