{"id":21384020,"url":"https://github.com/masterflomaster1/jfxcrypto","last_synced_at":"2025-07-13T14:31:34.796Z","repository":{"id":47732376,"uuid":"124923096","full_name":"MasterFlomaster1/JFXCrypto","owner":"MasterFlomaster1","description":"🔐 150+ Algorithms, Reactive GUI, and More: Text \u0026 File Encryption, Hashing, MAC, Key Generation, and Password Strength Evaluation. JCA, JCE with Bouncy Castle","archived":false,"fork":false,"pushed_at":"2024-12-02T23:31:22.000Z","size":23970,"stargazers_count":30,"open_issues_count":5,"forks_count":17,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-07T12:48:16.634Z","etag":null,"topics":["aes","aes-256","chacha20","cipher","encryption","enigma","gui","hash","hmac","java","javafx","md5","mvvm","password","pbkdf2","rc4","reactive","salsa20","security","sha-256"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MasterFlomaster1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-12T17:04:49.000Z","updated_at":"2025-02-28T20:45:33.000Z","dependencies_parsed_at":"2024-11-19T03:32:55.977Z","dependency_job_id":null,"html_url":"https://github.com/MasterFlomaster1/JFXCrypto","commit_stats":null,"previous_names":["masterflomaster1/jfxcrypto"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/MasterFlomaster1/JFXCrypto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterFlomaster1%2FJFXCrypto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterFlomaster1%2FJFXCrypto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterFlomaster1%2FJFXCrypto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterFlomaster1%2FJFXCrypto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MasterFlomaster1","download_url":"https://codeload.github.com/MasterFlomaster1/JFXCrypto/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterFlomaster1%2FJFXCrypto/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265155699,"owners_count":23719566,"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","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","aes-256","chacha20","cipher","encryption","enigma","gui","hash","hmac","java","javafx","md5","mvvm","password","pbkdf2","rc4","reactive","salsa20","security","sha-256"],"created_at":"2024-11-22T11:37:28.276Z","updated_at":"2025-07-13T14:31:30.803Z","avatar_url":"https://github.com/MasterFlomaster1.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/MasterFlomaster1/JFXCrypto/master/.github/ic.png\" width=\"250\" height=\"250\"\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eJFXCrypto\u003c/h1\u003e\n\n[![build](https://github.com/MasterFlomaster1/JFXCrypto/actions/workflows/build.yml/badge.svg)](https://github.com/MasterFlomaster1/JFXCrypto/actions/workflows/build.yml)\n![GitHub License](https://img.shields.io/github/license/MasterFlomaster1/JFXCrypto)\n![GitHub Release](https://img.shields.io/github/v/release/MasterFlomaster1/JFXCrypto)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/c1a1ccff4a10407c98c03bf7fbf0fa14)](https://app.codacy.com/gh/MasterFlomaster1/JFXCrypto/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade)\n\n### Description\n\nJFXCrypto is a flexible cryptographic tool designed to handle a wide range of encryption tasks. Featuring modern GUI, it supports over 150 encryption algorithms, spanning from ancient Greek ciphers to modern algorithms adopted by the US military and NSA.\n\n### Features\n\n- Utilize hundreds of available encryption algorithms through the [Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) library. See full list below.\n- Rich toolkit for encrypting text or files with support for variable key lengths, modes (ECB, CBC, CFB, OFB), various paddings (PKCS5Padding, PKCS7Padding, ISO10126Padding), and integration of salts and IVs for enhanced security.\n- Supports importing and exporting keys to PEM files using X509 and PKCS8 standards.\n- Generate hashes for text and files, and utilize HMAC (Hash-based Message Authentication Code) for data integrity verification.\n- Includes a collection of classic ciphers and ciphers from World Wars (See full list below)\n- Modern graphical interface powered by [atlantafx](https://github.com/mkpaz/atlantafx) library with support for multiple themes, animations, and icons, enhanced with an [MVVM](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel) architecture.\n- Asynchronous operations, leveraging NIO 2 for efficient file handling and processing.\n- Specialized password generation tool based on PBKDF2 for modern and secure password hashing.\n- Password complexity and strength analysis using the [zxcvbn4j](https://github.com/nulab/zxcvbn4j) library.\n- Utilizes the [Have I Been Pwned](https://haveibeenpwned.com/Passwords) API with [k-anonymity model](https://en.wikipedia.org/wiki/K-anonymity) to check if the password has been exposed in data breaches.\n\n### Usage\n\n1. Download the latest release JAR file\n2. ```bash\n   java --module-path path/to/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml -jar jfxcrypto-\u003cversion\u003e.jar\n\nThe build requires JDK 17 or later.\n\n### MVVM Architecture\n\n![MVVM Diagram](.github/mvvm.png)\n\nThe MVVM (Model-View-ViewModel) architecture separates the user interface (View) from the business logic and data (Model) by using a ViewModel. Using data bindings and event handling, it improves code organization and makes faster reactive GUI.\n\n### Block Cipher modes of Operation\n\n#### CBC (Cipher Block Chaining)\nCipher Block Chaining (CBC) links each plaintext block with the previous ciphertext block using XOR before encryption, enhancing security by ensuring identical plaintext blocks yield different ciphertext blocks. Pros: High security due to chaining; protects against pattern recognition. Cons: Requires an IV; sequential processing limits parallelism.\n\n#### ECB (Electronic Codebook)\nElectronic Codebook (ECB) encrypts each plaintext block independently with the same key. Pros: Simple implementation; allows parallel processing of blocks. Cons: Low security; identical plaintext blocks produce identical ciphertext, making it vulnerable to pattern analysis.\n\n#### CFB (Cipher Feedback)\nCipher Feedback (CFB) turns a block cipher into a stream cipher, encrypting small plaintext segments. Pros: Suitable for streaming data; no need for padding. Cons: Requires an IV; sequential processing prevents parallel encryption.\n\n#### OFB (Output Feedback)\nOutput Feedback (OFB) mode converts a block cipher into a synchronous stream cipher by encrypting an IV and XORing the result with plaintext. Pros: Error propagation is limited to the corresponding ciphertext segment; suitable for streaming. Cons: Requires an IV; vulnerable to known plaintext attacks if the same IV is reused.\n\n#### CTR (Counter)\nCounter (CTR) mode encrypts a counter value for each block and XORs it with plaintext, allowing blocks to be processed independently. Pros: Enables parallel encryption; no need for padding. Cons: Requires a unique counter for each block to ensure security.\n\n### Supported algorithms\n| Type                   | Algorithms                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Classical Cryptography | ADFGVX, Atbash, Affine, Caesar, Enigma, Playfair, Vigenere                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| Block Ciphers          | AES, BLOWFISH, CAMELLIA, CAST5, CAST6, DES, DESEDE, DSTU7624, GOST28147, GOST3412-2015, IDEA, NOEKEON, RC2, RC5, RC6, RIJNDAEL, SEED, SHACAL-2, SKIPJACK, SM4, Serpent, TEA, Threefish-1024, Threefish-256, Threefish-512, Tnepres, Twofish, XTEA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| Stream Ciphers         | ARC4, CHACHA, CHACHA20-POLY1305, CHACHA7539, Grain128, Grainv1, HC128, HC256, SALSA20, XSALSA20, ZUC-128, ZUC-256, VMPC, VMPC-KSA3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| Asymmetric Ciphers     | DHIES, ECIES, ECIESwithSHA1, ECIESwithSHA256, ECIESwithSHA384, ECIESwithSHA512, ELGAMAL, IES, RSA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| Digests                | BLAKE2B-160, BLAKE2B-256, BLAKE2B-384, BLAKE2B-512, BLAKE2S-128, BLAKE2S-160, BLAKE2S-224, BLAKE2S-256, BLAKE3-256, DSTU7564-256, DSTU7564-384, DSTU7564-512, GOST3411, GOST3411-2012-256, GOST3411-2012-512, HARAKA-256, HARAKA-512, KECCAK-224, KECCAK-256, KECCAK-288, KECCAK-384, KECCAK-512, MD2, MD4, MD5, PARALLELHASH128-256, PARALLELHASH256-512, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256, SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128-256, SHAKE256-512, SM3, Skein-1024-1024, Skein-1024-384, Skein-1024-512, Skein-256-128, Skein-256-160, Skein-256-224, Skein-256-256, Skein-512-128, Skein-512-160, Skein-512-224, Skein-512-256, Skein-512-384, Skein-512-512, TIGER, TUPLEHASH128-256, TUPLEHASH256-512, WHIRLPOOL |\n| HMAC                   | HMACDSTU7564-256, HMACDSTU7564-384, HMACDSTU7564-512, HMACGOST3411, HMACGOST3411-2012-256, HMACGOST3411-2012-512, HMACKECCAK224, HMACKECCAK256, HMACKECCAK288, HMACKECCAK384, HMACKECCAK512, HMACMD2, HMACMD4, HMACMD5, HMACRIPEMD128, HMACRIPEMD160, HMACRIPEMD256, HMACRIPEMD320, HMACSHA1, HMACSHA224, HMACSHA256, HMACSHA3-224, HMACSHA3-256, HMACSHA3-384, HMACSHA3-512, HMACSHA384, HMACSHA512, HMACSHA512/224, HMACSHA512/256, HMACSM3, HMACSkein-1024-1024, HMACSkein-1024-384, HMACSkein-1024-512, HMACSkein-256-128, HMACSkein-256-160, HMACSkein-256-224, HMACSkein-256-256, HMACSkein-512-128, HMACSkein-512-160, HMACSkein-512-224, HMACSkein-512-256, HMACSkein-512-384, HMACSkein-512-512, HMACTIGER, HMACWHIRLPOOL                                                                               |\n| PBKDF2                 | PBKDF2, PBKDF2WITHASCII, PBKDF2WITHHMACGOST3411, PBKDF2WITHHMACSHA224, PBKDF2WITHHMACSHA256, PBKDF2WITHHMACSHA3-224, PBKDF2WITHHMACSHA3-256, PBKDF2WITHHMACSHA3-384, PBKDF2WITHHMACSHA3-512, PBKDF2WITHHMACSHA384, PBKDF2WITHHMACSHA512, PBKDF2WITHHMACSM3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n\n### Screenshots\n\n![JFXCrypto](https://raw.githubusercontent.com/MasterFlomaster1/JFXCrypto/master/.github/im1.png)\n\n![JFXCrypto](https://raw.githubusercontent.com/MasterFlomaster1/JFXCrypto/master/.github/im2.png)\n\n![JFXCrypto](https://raw.githubusercontent.com/MasterFlomaster1/JFXCrypto/master/.github/im3.png)\n\n![JFXCrypto](https://raw.githubusercontent.com/MasterFlomaster1/JFXCrypto/master/.github/im4.png)\n\n## Contributing and support\n\nFeel free to contribute by opening issues or creating a pull request. Any help is appreciated :)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasterflomaster1%2Fjfxcrypto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmasterflomaster1%2Fjfxcrypto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasterflomaster1%2Fjfxcrypto/lists"}