Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.ar-AR.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ _اقرأ هذا في لغات أخرى:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## هياكل البيانات

Expand Down
3 changes: 2 additions & 1 deletion README.de-DE.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ _Lies dies in anderen Sprachen:_
[_Українська_](README.uk-UA.md),
[_Arabic_](README.ar-AR.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Datenstrukturen

Expand Down
3 changes: 2 additions & 1 deletion README.es-ES.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ _Léelo en otros idiomas:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Estructuras de Datos

Expand Down
3 changes: 2 additions & 1 deletion README.fr-FR.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ _Lisez ceci dans d'autres langues:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Data Structures

Expand Down
3 changes: 2 additions & 1 deletion README.he-IL.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ _קרא זאת בשפות אחרות:_
[_Arabic_](README.ar-AR.md),
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_Uzbek_](README.uz-UZ.md),
[_తెలుగు_](README.te-IN.md)

## מבני נתונים

Expand Down
3 changes: 2 additions & 1 deletion README.id-ID.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ _Baca ini dalam bahasa yang lain:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Struktur Data

Expand Down
3 changes: 2 additions & 1 deletion README.it-IT.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ _Leggilo in altre lingue:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Strutture Dati

Expand Down
3 changes: 2 additions & 1 deletion README.ja-JP.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ _Read this in other languages:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## データ構造

Expand Down
3 changes: 2 additions & 1 deletion README.ko-KR.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ _Read this in other languages:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## 자료 구조

Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ _Read this in other languages:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md),
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Data Structures

Expand Down
3 changes: 2 additions & 1 deletion README.pl-PL.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ _Read this in other languages:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Struktury Danych

Expand Down
3 changes: 2 additions & 1 deletion README.pt-BR.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ _Leia isto em outros idiomas:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Estrutura de Dados

Expand Down
3 changes: 2 additions & 1 deletion README.ru-RU.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ _Читать на других языках:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Структуры данных

Expand Down
370 changes: 370 additions & 0 deletions README.te-IN.md

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion README.tr-TR.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ _Read this in other languages:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Veri Yapıları

Expand Down
3 changes: 2 additions & 1 deletion README.uk-UA.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ _Вивчення матеріалу на інших мовах:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Структури даних

Expand Down
3 changes: 2 additions & 1 deletion README.uz-UZ.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ _Read this in other languages:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Ma'lumotlar tuzilmalari

Expand Down
3 changes: 2 additions & 1 deletion README.vi-VN.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ _Đọc bằng ngôn ngữ khác:_
[_Bahasa Indonesia_](README.id-ID.md),
[_Українська_](README.uk-UA.md),
[_Arabic_](README.ar-AR.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## Cấu Trúc Dữ Liệu

Expand Down
3 changes: 2 additions & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ _Read this in other languages:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## 数据结构

Expand Down
3 changes: 2 additions & 1 deletion README.zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ _Read this in other languages:_
[_Tiếng Việt_](README.vi-VN.md),
[_Deutsch_](README.de-DE.md),
[_Uzbek_](README.uz-UZ.md)
[_עברית_](README.he-IL.md)
[_עברית_](README.he-IL.md),
[_తెలుగు_](README.te-IN.md)

## 資料結構

Expand Down
3 changes: 2 additions & 1 deletion src/algorithms/cryptography/caesar-cipher/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Caesar Cipher Algorithm

_Read this in other languages:_
[_Русский_](README.ru-RU.md)
[_Русский_](README.ru-RU.md),
[_తెలుగు_](README.te-IN.md)

In cryptography, a **Caesar cipher**, also known as **Caesar's cipher**, the **shift cipher**, **Caesar's code** or **Caesar shift**, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a left shift of `3`, `D` would be replaced by `A`, `E` would become `B`, and so on. The method is named after Julius Caesar, who used it in his private correspondence.

Expand Down
34 changes: 34 additions & 0 deletions src/algorithms/cryptography/caesar-cipher/README.te-IN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Caesar Cipher Algorithm

_వేరే భాషల్లో చదవాలంటే:_
[_English_](README.md),
[_Русский_](README.ru-RU.md)

Cryptography లో **Caesar cipher** (దీన్నే **Caesar's cipher**, **shift cipher**, **Caesar's code** లేదా **Caesar shift** అని కూడా అంటారు) అనేది అన్నిటికంటే సింపుల్ గా ఉండే, అందరికీ బాగా తెలిసిన encryption techniques లో ఒకటి. ఇది ఒక రకమైన substitution cipher — అంటే plaintext లో ఉన్న ప్రతి letter ని, alphabet లో ఒక fixed నంబర్ positions ముందుకు/వెనక్కి ఉన్న వేరే letter తో మార్చేస్తాం. ఉదాహరణకి, left shift `3` అనుకుంటే, `D` బదులు `A` వస్తుంది, `E` బదులు `B` వస్తుంది, అలా అన్నమాట. Julius Caesar తన పర్సనల్ లెటర్స్ లో ఈ పద్ధతి వాడేవాడు, అందుకే దీనికి ఆ పేరు వచ్చింది.

![Caesar Cipher Algorithm](https://upload.wikimedia.org/wikipedia/commons/4/4a/Caesar_cipher_left_shift_of_3.svg)

## Example

రెండు alphabets ని పక్కపక్కన పెట్టి ఈ మార్పుని చూపించొచ్చు — cipher alphabet అంటే మామూలు alphabet నే కొన్ని positions ఎడమకి గానీ కుడికి గానీ తిప్పితే వచ్చేది. ఉదాహరణకి, ఇక్కడ మూడు places left rotation తో Caesar cipher ఉంది. ఇది right shift 23 తో సమానం (ఈ shift నంబర్ నే key గా వాడతాం):

```text
Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cipher: XYZABCDEFGHIJKLMNOPQRSTUVW
```

Encrypt చేసేటప్పుడు, message లో ప్రతి letter ని "plain" line లో వెతికి, దాని కింద "cipher" line లో ఉన్న letter ని రాసుకుంటాం.

```text
Plaintext: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
Ciphertext: QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD
```

## Complexity

- Time: `O(|n|)`
- Space: `O(|n|)`

## References

- [Wikipedia లో Caesar cipher](https://en.wikipedia.org/wiki/Caesar_cipher)
3 changes: 3 additions & 0 deletions src/algorithms/cryptography/hill-cipher/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Hill Cipher

_Read this in other languages:_
[_తెలుగు_](README.te-IN.md)

The **Hill cipher** is a [polygraphic substitution](https://en.wikipedia.org/wiki/Polygraphic_substitution) cipher based on linear algebra.

Each letter is represented by a number [modulo](https://en.wikipedia.org/wiki/Modular_arithmetic) `26`. Though this is not an essential feature of the cipher, this simple scheme is often used:
Expand Down
98 changes: 98 additions & 0 deletions src/algorithms/cryptography/hill-cipher/README.te-IN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Hill Cipher

_వేరే భాషల్లో చదవాలంటే:_
[_English_](README.md)

**Hill cipher** అనేది linear algebra మీద బేస్ అయిన ఒక [polygraphic substitution](https://en.wikipedia.org/wiki/Polygraphic_substitution) cipher.

ప్రతి letter ని [modulo](https://en.wikipedia.org/wiki/Modular_arithmetic) `26` లో ఒక నంబర్ గా చూపిస్తాం. ఈ cipher కి ఇది తప్పనిసరి కాదు కానీ, మామూలుగా ఈ సింపుల్ పద్ధతే వాడతారు:

| **Letter** | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| ------ | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| **Number** | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |

## Encryption

ఒక message ని encrypt చేయడానికి, ప్రతి `n` letters block ని (దాన్ని `n` components ఉన్న ఒక vector లాగా చూస్తాం) ఒక invertible `n × n` matrix తో, modulus `26` లో గుణిస్తాం.

Encryption కి వాడే ఈ matrix నే _cipher key_ అంటారు. దీన్ని invertible `n × n` matrices (modulo `26`) లో నుంచి random గా ఎంచుకోవాలి. ఎన్ని letters ఉన్న alphabet కైనా ఈ cipher ని మార్చి వాడుకోవచ్చు — లెక్కలన్నీ modulo `26` బదులు modulo (letters సంఖ్య) లో చేస్తే చాలు.

`ACT` అనే message, ఇంకా కింద ఉన్న key (letters లో అయితే `GYB/NQK/URP`) తీసుకుందాం:

```
| 6 24 1 |
| 13 16 10 |
| 20 17 15 |
```

`A` అంటే `0`, `C` అంటే `2`, `T` అంటే `19` కాబట్టి, message ఈ vector అవుతుంది:

```
| 0 |
| 2 |
| 19 |
```

అంటే, encrypt అయిన vector ఇలా వస్తుంది:

```
| 6 24 1 | | 0 | | 67 | | 15 |
| 13 16 10 | | 2 | = | 222 | ≡ | 14 | (mod 26)
| 20 17 15 | | 19 | | 319 | | 7 |
```

దీనికి సరిపోయే ciphertext `POH`.

ఇప్పుడు మన message `CAT` అనుకుందాం (`ACT` లో ఉన్న letters నే వాడుతున్నాం, గమనించండి), అంటే:

```
| 2 |
| 0 |
| 19 |
```

ఈసారి encrypt అయిన vector:

```
| 6 24 1 | | 2 | | 31 | | 5 |
| 13 16 10 | | 0 | = | 216 | ≡ | 8 | (mod 26)
| 20 17 15 | | 19 | | 325 | | 13 |
```

దీనికి సరిపోయే ciphertext `FIN`. చూశారా, ప్రతి letter మారిపోయింది.

## Decryption

Message ని decrypt చేయడానికి, ప్రతి block ని encryption కి వాడిన matrix యొక్క inverse తో గుణిస్తాం. ciphertext ని మళ్ళీ vector గా మార్చి, key matrix యొక్క inverse matrix (letters లో `IFK/VIV/VMI`) తో గుణిస్తే సరిపోతుంది. (Inverse matrix ఎలా కనుక్కోవాలో తెలియాలంటే [matrix inversion](https://en.wikipedia.org/wiki/Matrix_inversion) చూడండి.) పైన example లో వాడిన matrix కి modulo 26 లో inverse ఇది:

```
-1
| 6 24 1 | | 8 5 10 |
| 13 16 10 | (mod 26) ≡ | 21 8 21 |
| 20 17 15 | | 21 12 8 |
```

పైన వచ్చిన ciphertext `POH` తీసుకుంటే:

```
| 8 5 10 | | 15 | | 260 | | 0 |
| 21 8 21 | | 14 | = | 574 | ≡ | 2 | (mod 26)
| 21 12 8 | | 7 | | 539 | | 19 |
```

అనుకున్నట్టే మళ్ళీ `ACT` వచ్చేసింది.

## Encrypt చేసే matrix ని ఎలా ఎంచుకోవాలి

Encrypt చేసే matrix ని ఎంచుకునేటప్పుడు రెండు చిక్కులు ఉంటాయి:

1. అన్ని matrices కి inverse ఉండదు. Matrix యొక్క [determinant](https://en.wikipedia.org/wiki/Determinant) zero కాకపోతేనే దానికి inverse ఉంటుంది.
2. Encrypt చేసే matrix యొక్క determinant కి, modular base కి common factors ఏమీ ఉండకూడదు.

అంటే పైన లాగా modulo `26` లో పని చేస్తుంటే, determinant zero కాకూడదు, ఇంకా `2` తో గానీ `13` తో గానీ భాగించబడకూడదు. Determinant `0` అయినా, లేదా modular base తో common factors ఉన్నా, ఆ matrix ని Hill cipher లో వాడలేం — వేరే matrix ఎంచుకోవాలి (లేకపోతే decrypt చేయడం కుదరదు). అదృష్టం ఏంటంటే, Hill cipher కి కావాల్సిన conditions కి సరిపోయే matrices చాలానే దొరుకుతాయి.

## References

- [Wikipedia లో Hill cipher](https://en.wikipedia.org/wiki/Hill_cipher)
- [MathIsFun లో Matrix inversion](https://www.mathsisfun.com/algebra/matrix-inverse.html)
- [GeeksForGeeks](https://www.geeksforgeeks.org/hill-cipher/)
3 changes: 3 additions & 0 deletions src/algorithms/cryptography/polynomial-hash/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Polynomial Rolling Hash

_Read this in other languages:_
[_తెలుగు_](README.te-IN.md)

## Hash Function

**Hash functions** are used to map large data sets of elements of an arbitrary
Expand Down
Loading