An open API service indexing awesome lists of open source software.

https://github.com/alex-snd/vigener

πŸ”“ The project is intended for convenient key recovery from the ciphertext obtained using the VigenΓ¨re cipher.
https://github.com/alex-snd/vigener

cryptography

Last synced: 27 days ago
JSON representation

πŸ”“ The project is intended for convenient key recovery from the ciphertext obtained using the VigenΓ¨re cipher.

Awesome Lists containing this project

README

          

# Vigener



ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ восстановлСния ΠΊΠ»ΡŽΡ‡Π° ΠΏΠΎ ΡˆΠΈΡ„Ρ€Ρ‚Π΅ΠΊΡΡ‚Ρƒ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡˆΠΈΡ„Ρ€Π° [Π’ΠΈΠΆΠ΅Π½Π΅Ρ€Π°](https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher).

## Building

Для компиляции ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° систСма сборки CMake вСрсии Π½Π΅ Π½ΠΈΠΆΠ΅ 3.19.2, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π½Π° [ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС](https://cmake.org/).
```shell
> mkdir build && cd build
> cmake ..
> cmake --build . --config [Debug | Coverage | Release]
```

## Usage

```shell
> Vigener -h
ИспользованиС: Vigener -i [ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с ΡˆΠΈΡ„Ρ€Ρ‚Π΅ΠΊΡΡ‚ΠΎΠΌ] -ia [ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с аналитичСским тСкстом]

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

-i Π—Π°Π΄Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с ΡˆΠΈΡ„Ρ€Ρ‚Π΅ΠΊΡΡ‚ΠΎΠΌ
-ia Π—Π°Π΄Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с аналитичСским тСкстом
-o Π—Π°Π΄Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ для сохранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - ΠΏΡƒΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π° ΡˆΠΈΡ„Ρ€Ρ‚Π΅ΠΊΡΡ‚Π° с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ {processed}
-a Π—Π°Π΄Π°Π΅Ρ‚ Π°Π»Ρ„Π°Π²ΠΈΡ‚ ΡˆΠΈΡ„Ρ€Ρ‚Π΅ΠΊΡΡ‚Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°
-af Π—Π°Π΄Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с Π°Π»Ρ„Π°Π²ΠΈΡ‚ΠΎΠΌ ΡˆΠΈΡ„Ρ€Ρ‚Π΅ΠΊΡΡ‚Π°
-t Π—Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΡ€ΠΎΠ³ для выдСлСния статистики. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 6
-k Π—Π°Π΄Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠ»ΡŽΡ‡Π°
-mk Π—Π°Π΄Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠ»ΡŽΡ‡Π°

ΠŸΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡˆΠΈΠ΅ значСния:

0: Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с сохранСниСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹. Ctrl + C - Π²Ρ‹Ρ…ΠΎΠ΄ Π±Π΅Π· сохранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°
-1: вывСсти Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡˆΠΈΡ„Ρ€Ρ‚Π΅ΠΊΡΡ‚ ΠΏΡ€ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅
-2: ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ сдвигов Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ…. ΠŸΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ сдвига Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ Π³Ρ€ΡƒΠΏΠΏΡƒ,
для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС дСйствия.
Для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠ° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 Π² ΠΏΠΎΠ»Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π³Ρ€ΡƒΠΏΠΏΡ‹.

ΠŸΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ сдвига Π³Ρ€ΡƒΠΏΠΏΡ‹ указываСтся ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для
цикличСского сдвига статистики Π²ΠΏΡ€Π°Π²ΠΎ ΠΈΠ»ΠΈ Π²Π»Π΅Π²ΠΎ соотвСтсвСнно.
Для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡˆΠ΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 Π² ΠΏΠΎΠ»Π΅ сдвига.
```

## Example

Π’ ΠΏΠ°ΠΏΠΊΠ΅ tests содСрТится Ρ„Π°ΠΉΠ» 'Encrypted text.txt', ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π² сСбС ΡˆΠΈΡ„Ρ€Ρ‚Π΅ΠΊΡΡ‚, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡˆΠΈΡ„Ρ€Π° Π’ΠΈΠΆΠ΅Π½Π΅Ρ€Π° с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π° Ρ€Π°Π²Π½Ρ‹ΠΌ 7. Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ tests содСрТится Ρ„Π°ΠΉΠ» 'Analytical text.txt' с аналитичСским тСкстом.

```shell
> Vigener -i "tests/Encrypted text.txt" -ia "tests/Analytical text.txt"
```

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ восстановлСния ΠΊΠ»ΡŽΡ‡Π° являСтся ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ распрСдСлСния символов Π°Π»Ρ„Π°Π²ΠΈΡ‚Π° Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… ΡˆΠΈΡ„Ρ€Ρ‚Π΅ΠΊΡΡ‚Π° ΠΊ эталонному (ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ ΠΈΠ· аналитичСского тСкста). ΠŸΡ€ΠΈ Π²Π΅Ρ€Π½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ распрСдСлСния Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π° распрСлСний Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:



## License

[Apache-2.0 License](LICENSE)