Skip to content

feat: add substitution cipher breaker with simulated annealing - #1672

Merged
csxark merged 1 commit into
csxark:mainfrom
karan-chaos:feature/substitution-cipher-breaker
Aug 28, 2026
Merged

feat: add substitution cipher breaker with simulated annealing#1672
csxark merged 1 commit into
csxark:mainfrom
karan-chaos:feature/substitution-cipher-breaker

Conversation

@karan-chaos

@karan-chaos karan-chaos commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Summary

Resolves #1671

This PR introduces a complete substitution cipher breaker using frequency
analysis for initial key seeding, hill climbing and simulated annealing for
optimization, and quadgram fitness scoring for evaluating candidate plaintext.

It also adds an interactive React interface for visualizing the breaking
process and comparing candidate solutions.

Changes

Cipher Breaking Engine

Implemented:

  • Frequency analysis
  • Frequency-based initial key seeding
  • Key manipulation utilities
  • Hill climbing optimization
  • Simulated annealing
  • Quadgram fitness scoring
  • Candidate ranking
  • Complete cipher-breaking pipeline

Optimization

Added a hybrid optimization approach combining:

  • Frequency analysis for initial candidate generation
  • Hill climbing for iterative improvement
  • Simulated annealing for broader solution exploration

Candidate Scoring

Added quadgram-based fitness scoring to evaluate and rank decrypted
plaintext candidates.

Interactive UI

Added a React interface featuring:

  • Ciphertext input
  • Cipher-breaking controls
  • Convergence charts
  • Key mapping visualization
  • Ranked candidate results
  • Decoded plaintext output
  • 4 pre-loaded sample ciphertexts

Visualization

Added tools for viewing:

  • Optimization convergence
  • Candidate rankings
  • Fitness scores
  • Key mappings
  • Decoded results

Testing

Added 30+ unit tests covering:

  • Key manipulation
  • Fitness scoring
  • Frequency analysis
  • Frequency seeding
  • Hill climbing
  • Simulated annealing
  • Breaking pipeline
  • Core edge cases

Verification

  • Frequency analysis verified
  • Initial key seeding verified
  • Key manipulation verified
  • Quadgram scoring verified
  • Hill climbing verified
  • Simulated annealing verified
  • Convergence tracking verified
  • Candidate ranking verified
  • Key mapping visualization verified
  • Sample ciphertexts verified
  • 30+ unit tests passing

Automated cryptanalysis tool for monoalphabetic substitution ciphers using
frequency analysis seed, hill climbing with simulated annealing, and quadgram
log-likelihood scoring. Includes interactive React UI with convergence charts,
key mapping visualization, and 30+ unit tests.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
@vercel

vercel Bot commented Aug 28, 2026

Copy link
Copy Markdown

@karan-chaos is attempting to deploy a commit to the csxark's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions

Copy link
Copy Markdown
Contributor

🎉 Thank You for Your Contribution

Hello @karan-chaos,

Thank you for submitting a Pull Request to CryptoViz. We appreciate the time and effort you've invested in contributing to the project.

Your Pull Request has been received successfully and will be reviewed by the maintainers as soon as possible.

📋 Pull Request Checklist

  • ✅ Linked the related issue
  • ✅ No merge conflicts
  • ✅ Synced with the latest main branch
  • ✅ Build passes successfully
  • ✅ All tests pass

Ensuring these requirements are met helps streamline the review process and enables maintainers to review your contribution more efficiently.

❤️ Support CryptoViz

If you find CryptoViz helpful, consider supporting the project by:

  • ⭐ Starring the repository
  • 🍴 Forking the repository
  • 👤 Following Ark on GitHub
  • 💼 Connecting on LinkedIn
  • 🌐 Visiting the Portfolio

Your support helps increase the project's visibility and encourages continued development. Thank you for being a part of the CryptoViz community!

Thank you once again for contributing to CryptoViz. We appreciate your support and look forward to reviewing your contribution.

@coderabbitai

coderabbitai Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 57 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 867f4085-c778-4e9b-9b8b-2f9517849adc

📥 Commits

Reviewing files that changed from the base of the PR and between d227a75 and 81737c8.

📒 Files selected for processing (4)
  • app/substitution-breaker/page.tsx
  • components/cryptanalysis/SubstitutionBreaker.tsx
  • lib/cryptanalysis/substitutionBreaker.ts
  • tests/unit/substitutionBreaker.test.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@csxark csxark added ECSoC26 Elite Coders Summer of Code 2026 good-issue and removed needs review labels Aug 28, 2026
@csxark
csxark merged commit 2439cd6 into csxark:main Aug 28, 2026
3 of 4 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

🎉 Pull Request Merged

Hello @karan-chaos,

Thank you for your contribution to CryptoViz. Your Pull Request has been reviewed and successfully merged into the project.

We sincerely appreciate the time and effort you invested in improving the project. Contributions like yours help make CryptoViz better for the entire community.

We look forward to your future contributions and hope to collaborate with you again.

❤️ Support CryptoViz

If you find CryptoViz helpful, consider supporting the project by:

  • ⭐ Starring the repository
  • 🍴 Forking the repository
  • 👤 Following Ark on GitHub
  • 💼 Connecting on LinkedIn
  • 🌐 Visiting the Portfolio

Your support helps increase the project's visibility and encourages continued development. Thank you for being a part of the CryptoViz community!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ECSoC26-L3 ECSoC26 Elite Coders Summer of Code 2026 good-issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Substitution Cipher Breaker with Frequency Analysis and Simulated Annealing

2 participants