Skip to content

Latest commit

 

History

History
83 lines (70 loc) · 4.01 KB

README.md

File metadata and controls

83 lines (70 loc) · 4.01 KB

Science.Cryptography.Ciphers v2 PREVIEW

NuGet CLI NuGet

Ancient and classic cipher methods and analysis tools implemented in .NET by using high performance memory management and SIMD hardware intrinsics.

Use command-line interface:

crypto encrypt shift -k 13 "Hello world!"
crypto solve "Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj."

Use rich framework APIs:

dotnet add package Science.Cryptography.Ciphers --prerelease
dotnet add package Science.Cryptography.Ciphers.Specialized --prerelease
dotnet add package Science.Cryptography.Ciphers.Analysis --prerelease

What's new in v2?

  • New CLI app for new way of usage
  • Ciphers and tools rewritten to allocation free operation, take advantage of hardware intrinsics, and use specialized fast path for ASCII encoding. See Performance Improvements for details and benchmarks.
  • Reworked analysis tools and IAsyncEnumerable interface for consuming analysis intermediate results
  • CryptogramSolver for automatic decryption of ciphertext
  • Brute force key spaces with parallel partitioning support
  • New ciphers (10+): Scytale, Morse Code with extended charset, Polybius, Columnar Transposition, Double Columnar Transposition, ADFGX, ADFGVX, One-Time Pad, Wolfenbütteler, Malespin
  • More detailed documentation

Command-line interface

Many of the library operations are published via CLI as well:

Framework APIs

You can unlock the full power of the library from code:

var cipher = new PlayfairCipher();
var key = PolybiusSquare.CreateFromKeyword("PLAYFAIR", WellKnownAlphabets.EnglishWithoutJ);
var ciphertext = cipher.Encrypt("Hello world!", key);

Assets

The full list of assets:

Contribution

  • Add any missing cipher
    • Prefer performance (no heap allocations, SIMD operations, ...)
    • Feel free to add any not listed
  • Performance improvements
    • Post benchmark and its results as evidence to show change in efficiency
  • Unit tests