{"id":24187734,"url":"https://github.com/im-a-kookie/cryptographic-aes-server","last_synced_at":"2025-10-11T23:36:16.610Z","repository":{"id":248830921,"uuid":"822167341","full_name":"im-a-kookie/Cryptographic-AES-Server","owner":"im-a-kookie","description":"Simple manual implementation of multithreaded HTTP server via HTTPListenerContext, implementing custom AES virtual streams to provide large files securely.","archived":false,"fork":false,"pushed_at":"2024-11-21T10:18:30.000Z","size":62,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-10T10:59:26.723Z","etag":null,"topics":["aes-encryption","cryptography","http-server","multithreaded-server","stream-processing"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/im-a-kookie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-30T13:18:25.000Z","updated_at":"2024-12-13T05:14:12.000Z","dependencies_parsed_at":"2024-07-17T10:47:31.713Z","dependency_job_id":"03286eaf-8ab0-4ea1-ae07-4b2f307959e7","html_url":"https://github.com/im-a-kookie/Cryptographic-AES-Server","commit_stats":null,"previous_names":["im-a-kookie/videoserverexample","im-a-kookie/cryptographic-aes-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/im-a-kookie/Cryptographic-AES-Server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/im-a-kookie%2FCryptographic-AES-Server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/im-a-kookie%2FCryptographic-AES-Server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/im-a-kookie%2FCryptographic-AES-Server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/im-a-kookie%2FCryptographic-AES-Server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/im-a-kookie","download_url":"https://codeload.github.com/im-a-kookie/Cryptographic-AES-Server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/im-a-kookie%2FCryptographic-AES-Server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279009394,"owners_count":26084580,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aes-encryption","cryptography","http-server","multithreaded-server","stream-processing"],"created_at":"2025-01-13T13:35:34.861Z","updated_at":"2025-10-11T23:36:16.596Z","avatar_url":"https://github.com/im-a-kookie.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n[![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](https://choosealicense.com/licenses/mit/)\n\n# Project Title\n\nA simple C#.NET media player, which encrypts the file via AES256, then plays it back via an internal HTTP file server using VLCSharp. This is not necessarily practical in and of itself, but demonstrates a variety of important and foundational software concepts;\n\n- Custom Scalable UI elements\n- Content delivery over HTTP(S) using low level HTTP listeners\n- Multithreaded message processing\n- Streams and Cryptography\n\n### HTTP Server\n\nThe internal HTTP code can easily be expanded to create a more comprehensive media server, file server, or web server. Encorporating REST API is also not difficult. For example, while the application is running, http://localhost:1234/controls will provide a widget with simple control over the media player.\n\nIncoming requests are proceessed via manual threadpool implementation, using highly scalable non-blocking Message Pattern. For extremely high request loads, a TPL queuing pattern will provide higher throughput via ActionBlock.\n\nBut at this point just use ASP.NET, it's faster, easier, this project is demonstrational only.\n\n### Media Player\n\nThe Media Player is relatively straight forward, using VLCSharp to play the media files. Unfortunately, WinForms has a very annoying graphics interface especially with transpareency, so we use an overlayed form with TransparencyKey to provide the interface above the video. In retrospect, WPF is more appropriate for this task.\n\n### Encryption\n\nAES provides strong encryption, but a basic \"encrypt file\" level approach is generally not suitable when dealing with large files that require random or seekable access. Generally speaking, this is easy to solve via ECB and CTR AES modes, however this can be very inefficient due to the necessary manual looping, XORing, and file access overhead. A more performant solution is provided, better leveraging SeqIO and the extremely high throughput of AES-NI, by encrypting and decrypting the file into large virtually mapped chunks.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim-a-kookie%2Fcryptographic-aes-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fim-a-kookie%2Fcryptographic-aes-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim-a-kookie%2Fcryptographic-aes-server/lists"}