Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

pluie-org/chamah

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chamah

Chamah is a symmetric-key algorythm. Project is all fresh

Todo

  • Sheduled Key
  • Entropy managment
  • Crypt Header containing real random seed used by Chamah to cypher data & s-box generation
  • Map split definition based on skey
  • Map mix definition based on mkey
  • Base64 encoding
  • Compression
  • Masking
  • random Noise data addition over split and mix operation

S-Box generation example

    ----------------------------------------------------------------------------------
    || 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0a | 0b | 0c | 0d | 0e | 0f |
    ----------------------------------------------------------------------------------
 00 || d1 | 04 | 02 | 8f | 7a | f4 | 5f | 19 | 89 | c2 | fb | 52 | 6f | 94 | f0 | b1 |
 01 || 71 | 03 | e0 | cd | 26 | 7b | c3 | 8b | 13 | 5a | fd | 98 | dc | c1 | 33 | 78 |
 02 || 30 | 4c | 09 | 08 | 9e | e6 | 86 | 5b | 41 | d8 | 00 | 9f | 63 | c5 | b4 | 28 |
 03 || b2 | 4a | fc | 0f | ef | f5 | 47 | 64 | ce | e5 | 0c | 73 | a8 | 7c | f9 | 9a |
 04 || b7 | 46 | 05 | 06 | 87 | cc | 5c | 1a | ae | 2b | 3c | 34 | 65 | d7 | 29 | 1f |
 05 || bd | 5e | f8 | 2a | 43 | d9 | 6a | ac | 79 | d6 | 3a | d2 | af | db | 22 | 72 |
 06 || a9 | 6e | 21 | 1e | 54 | 61 | be | aa | a2 | ad | 25 | f7 | bb | 84 | e8 | f6 |
 07 || 81 | 0e | ff | ee | 44 | ea | 5d | 3d | 97 | 1d | 0a | ed | 3b | d5 | 6b | c6 |
 08 || 2e | b9 | 4f | e1 | 10 | 45 | 1c | 8a | 68 | 57 | a0 | 12 | c4 | 18 | 76 | 95 |
 09 || 8e | a1 | 11 | 7d | f2 | 58 | 96 | c7 | 80 | e2 | 93 | 90 | 3f | b8 | a3 | 66 |
 0a || cf | 91 | 32 | ba | 37 | 62 | 67 | 99 | d3 | 17 | 88 | 51 | 59 | ca | a5 | 83 |
 0b || 4d | f1 | 0d | a7 | bc | 16 | 4b | 7f | 75 | 4e | 8d | 70 | ec | 69 | 50 | 60 |
 0c || 48 | 31 | 07 | 9d | ab | fe | da | 2c | 38 | d4 | b6 | eb | 82 | de | 9c | 6c |
 0d || 42 | b0 | 85 | e9 | 35 | 2f | 53 | a6 | c9 | 39 | c8 | 3e | 24 | e3 | 14 | fa |
 0e || 56 | b3 | 49 | 01 | bf | 8c | a4 | 2d | df | 20 | 27 | 36 | c0 | 15 | e7 | 9b |
 0f || 7e | b5 | 40 | d0 | 1b | cb | 0b | 55 | 6d | 92 | 74 | f3 | dd | 23 | e4 | 77 |

s-box are generated with input generator and several transformation

Left rotation

d9              => b3
1 1 0 1 1 0 0 1 => 1 0 1 1 0 0 1 1 => ...

Inverse left rotation

[d9]
[1 1 0 1 1 0 0 1]
9b              => 37
1 0 0 1 1 0 1 1 => 0 0 1 1 0 1 1 1 => ...

Reverse left rotation

[d9]
[1 1 0 1 1 0 0 1]
26              => 4c
0 0 1 0 0 1 1 0 => 0 1 0 0 1 1 0 0 => ...

Reverse inverse left rotation

[d9]
[1 1 0 1 1 0 0 1]
[26]
[0 0 1 0 0 1 1 0]
64              => c8
0 1 1 0 0 1 0 0 => 1 1 0 0 1 0 0 0 => ...

Example

input byte : d9

   0 1 2 3 4 5 6 7   8 9 A B C D E F
0 [1 1 0 1 1 0 0 1] [0 0 1 0 0 1 1 0]
1 [1 0 1 1 0 0 1 1] [0 1 0 0 1 1 0 0]
2 [0 1 1 0 0 1 1 1] [1 0 0 1 1 0 0 0]
3 [1 1 0 0 1 1 1 0] [0 0 1 1 0 0 0 1]
4 [1 0 0 1 1 1 0 1] [0 1 1 0 0 0 1 0]
5 [0 0 1 1 1 0 1 1] [1 1 0 0 0 1 0 0]
6 [0 1 1 1 0 1 1 0] [1 0 0 0 1 0 0 1]
7 [1 1 1 0 1 1 0 0] [0 0 0 1 0 0 1 1]
    Left rotation    Reverse left rot

   Inverse left rot  Rev inv left rot
8 [1 0 0 1 1 0 1 1] [0 1 1 0 0 1 0 0]
9 [0 0 1 1 0 1 1 1] [1 1 0 0 1 0 0 0]
A [0 1 1 0 1 1 1 0] [1 0 0 1 0 0 0 1]
B [1 1 0 1 1 1 0 0] [0 0 1 0 0 0 1 1]
C [1 0 1 1 1 0 0 1] [0 1 0 0 0 1 1 0]
D [0 1 1 1 0 0 1 1] [1 0 0 0 1 1 0 0]
E [1 1 1 0 0 1 1 0] [0 0 0 1 1 0 0 1]
F [1 1 0 0 1 1 0 1] [0 0 1 1 0 0 1 0]

an additionnal start vertical index give the position, of starting current transformation

here all start index begins to 0
start index are generated pseudo-randomly

Legend

--- : horizontal char or sequence duplicate
| : vertical char duplicate

Input (36+1) string

blaz to blaz000000000000aozaozaozaoz

Input chunk string representation

000000 [12:12]  blaz to blaz|
                ----    ----
000001 [12:12]  000000000000
                ------------
000002 [12:12]  aozaozaozaoz|
000003 [01:12]  ------------

Input chunk hexa representation

000000 [12:12]	62 6c 61 7a 20 74 6f 20 62 6c 61 7a | 
                -- -- -- --             -- -- -- --
000001 [12:12]	30 30 30 30 30 30 30 30 30 30 30 30 
                -- -- -- -- -- -- -- -- -- -- -- --
000002 [12:12]	61 6f 7a 61 6f 7a 61 6f 7a 61 6f 7a |
                -----------------------------------
000003 [01:12]	0a 

Output chunk hexa representation

000000 [12:12]	30 51 13 ec 76 cc 32 ff 03 95 8f f7 
000001 [12:12]	ad 38 9a 58 ed 03 36 01 e1 2f 02 ee 
000002 [12:12]	71 31 f5 0b 38 82 e6 bb 2e 74 cc 84 
000003 [01:12]	c0 

Output (37) string

0Q��v�2����8�X��6��/��q1�
                         8���.t̄

Round definition

  • input data is read by chunk
  • on each chunk we iterate over input chunk data
  • a standard round use s-box related to a key index with input as chunk data index
  • extended round repeat operation with other s-box related to other key index with input as previous output
  • next round can be standard or extended with input as previous output

Standard round

== input byte ======

[r]ound : id - [i]nput chunk data : index - chunk [l]ine : index - [k]ey : index - [b]yte : output

Extended round

{standard round} - [k]ey : index - [b]yte : output

Round example

== 62 ===============
r : 00 - i : 00 - l : 00 - k : 00 - b : 9c - k : 00 - b : 24
r : 01 - i : 00 - l : 00 - k : 01 - b : dc
r : 02 - i : 00 - l : 00 - k : 02 - b : f4
r : 03 - i : 00 - l : 00 - k : 03 - b : d3
r : 04 - i : 00 - l : 00 - k : 04 - b : 3d
r : 05 - i : 00 - l : 00 - k : 05 - b : 07
r : 06 - i : 00 - l : 00 - k : 06 - b : 9a
r : 07 - i : 00 - l : 00 - k : 07 - b : a8 - k : 07 - b : a4
r : 08 - i : 00 - l : 00 - k : 08 - b : e6
r : 09 - i : 00 - l : 00 - k : 09 - b : 5e - k : 09 - b : 8a
r : 10 - i : 00 - l : 00 - k : 10 - b : c6 - k : 06 - b : 0a
r : 11 - i : 00 - l : 00 - k : 11 - b : 30

all round transformation ([] are extended round) :
62 > [9c > 24] > dc > f4 > d3 > 3d > 07 > 9a > [a8 > a4] > e6 > [5e > 8a] > [c6 > 0a] > 30

Round sequences over chunk data iteration example

expose extended round moving position with related index key

== 6c ===============
r : 00 - i : 01 - l : 00 - k : 15 - b : 74 - k : 00 - b : b2
r : 01 - i : 01 - l : 00 - k : 14 - b : 84
r : 02 - i : 01 - l : 00 - k : 13 - b : fe
r : 03 - i : 01 - l : 00 - k : 12 - b : fd
r : 04 - i : 01 - l : 00 - k : 11 - b : e5
r : 05 - i : 01 - l : 00 - k : 10 - b : a1
r : 06 - i : 01 - l : 00 - k : 09 - b : 5c
r : 07 - i : 01 - l : 00 - k : 08 - b : 3e - k : 07 - b : e1
r : 08 - i : 01 - l : 00 - k : 07 - b : 82
r : 09 - i : 01 - l : 00 - k : 06 - b : c1 - k : 09 - b : fd
r : 10 - i : 01 - l : 00 - k : 05 - b : a9 - k : 06 - b : 0d
r : 11 - i : 01 - l : 00 - k : 04 - b : 51
== 61 ===============
r : 00 - i : 02 - l : 00 - k : 00 - b : 38 - k : 00 - b : 44
r : 01 - i : 02 - l : 00 - k : 01 - b : 74
r : 02 - i : 02 - l : 00 - k : 02 - b : 97 - k : 14 - b : 97
r : 03 - i : 02 - l : 00 - k : 03 - b : 33
r : 04 - i : 02 - l : 00 - k : 04 - b : 5e
r : 05 - i : 02 - l : 00 - k : 05 - b : 22
r : 06 - i : 02 - l : 00 - k : 06 - b : 64
r : 07 - i : 02 - l : 00 - k : 07 - b : 66
r : 08 - i : 02 - l : 00 - k : 08 - b : de
r : 09 - i : 02 - l : 00 - k : 09 - b : 9c - k : 09 - b : d5
r : 10 - i : 02 - l : 00 - k : 10 - b : 70
r : 11 - i : 02 - l : 00 - k : 11 - b : 2c - k : 11 - b : 13
== 7a ===============
r : 00 - i : 03 - l : 00 - k : 15 - b : aa - k : 00 - b : b7
r : 01 - i : 03 - l : 00 - k : 14 - b : df
r : 02 - i : 03 - l : 00 - k : 13 - b : 6b - k : 14 - b : e7
r : 03 - i : 03 - l : 00 - k : 12 - b : 7a
r : 04 - i : 03 - l : 00 - k : 11 - b : da
r : 05 - i : 03 - l : 00 - k : 10 - b : 02
r : 06 - i : 03 - l : 00 - k : 09 - b : 69
r : 07 - i : 03 - l : 00 - k : 08 - b : b7
r : 08 - i : 03 - l : 00 - k : 07 - b : 55
r : 09 - i : 03 - l : 00 - k : 06 - b : 4d - k : 09 - b : c2
r : 10 - i : 03 - l : 00 - k : 05 - b : 7a
r : 11 - i : 03 - l : 00 - k : 04 - b : a6 - k : 11 - b : ec
== 20 ===============
r : 00 - i : 04 - l : 00 - k : 00 - b : 7b
r : 01 - i : 04 - l : 00 - k : 01 - b : 15 - k : 01 - b : ed
r : 02 - i : 04 - l : 00 - k : 02 - b : 71 - k : 14 - b : ed
r : 03 - i : 04 - l : 00 - k : 03 - b : f6
r : 04 - i : 04 - l : 00 - k : 04 - b : 53 - k : 12 - b : e1
r : 05 - i : 04 - l : 00 - k : 05 - b : ab
r : 06 - i : 04 - l : 00 - k : 06 - b : 73
r : 07 - i : 04 - l : 00 - k : 07 - b : 3d
r : 08 - i : 04 - l : 00 - k : 08 - b : f4
r : 09 - i : 04 - l : 00 - k : 09 - b : 22
r : 10 - i : 04 - l : 00 - k : 10 - b : 3c
r : 11 - i : 04 - l : 00 - k : 11 - b : 4b - k : 11 - b : 76
== 74 ===============
r : 00 - i : 05 - l : 00 - k : 15 - b : 6c
r : 01 - i : 05 - l : 00 - k : 14 - b : be - k : 01 - b : 66
r : 02 - i : 05 - l : 00 - k : 13 - b : 50 - k : 14 - b : 13
r : 03 - i : 05 - l : 00 - k : 12 - b : b2
r : 04 - i : 05 - l : 00 - k : 11 - b : c6 - k : 12 - b : 78
r : 05 - i : 05 - l : 00 - k : 10 - b : af
r : 06 - i : 05 - l : 00 - k : 09 - b : cc
r : 07 - i : 05 - l : 00 - k : 08 - b : 3a
r : 08 - i : 05 - l : 00 - k : 07 - b : aa
r : 09 - i : 05 - l : 00 - k : 06 - b : bf
r : 10 - i : 05 - l : 00 - k : 05 - b : fb
r : 11 - i : 05 - l : 00 - k : 04 - b : c5 - k : 11 - b : cc
== 6f ===============
r : 00 - i : 06 - l : 00 - k : 00 - b : 64
r : 01 - i : 06 - l : 00 - k : 01 - b : 37 - k : 01 - b : a4
r : 02 - i : 06 - l : 00 - k : 02 - b : 00
r : 03 - i : 06 - l : 00 - k : 03 - b : a7 - k : 03 - b : 83
r : 04 - i : 06 - l : 00 - k : 04 - b : 86 - k : 12 - b : 0b
r : 05 - i : 06 - l : 00 - k : 05 - b : 61
r : 06 - i : 06 - l : 00 - k : 06 - b : c7 - k : 10 - b : ca
r : 07 - i : 06 - l : 00 - k : 07 - b : 5e
r : 08 - i : 06 - l : 00 - k : 08 - b : a9
r : 09 - i : 06 - l : 00 - k : 09 - b : b5
r : 10 - i : 06 - l : 00 - k : 10 - b : 82
r : 11 - i : 06 - l : 00 - k : 11 - b : 32
== 20 ===============
r : 00 - i : 07 - l : 00 - k : 15 - b : 0f
r : 01 - i : 07 - l : 00 - k : 14 - b : 73 - k : 01 - b : 3b
r : 02 - i : 07 - l : 00 - k : 13 - b : d2
r : 03 - i : 07 - l : 00 - k : 12 - b : 15 - k : 03 - b : 59
r : 04 - i : 07 - l : 00 - k : 11 - b : d9 - k : 12 - b : b7
r : 05 - i : 07 - l : 00 - k : 10 - b : 56
r : 06 - i : 07 - l : 00 - k : 09 - b : 95 - k : 10 - b : 06
r : 07 - i : 07 - l : 00 - k : 08 - b : 94
r : 08 - i : 07 - l : 00 - k : 07 - b : f4
r : 09 - i : 07 - l : 00 - k : 06 - b : df
r : 10 - i : 07 - l : 00 - k : 05 - b : 31
r : 11 - i : 07 - l : 00 - k : 04 - b : ff
== 62 ===============
r : 00 - i : 08 - l : 00 - k : 00 - b : 9c
r : 01 - i : 08 - l : 00 - k : 01 - b : ce
r : 02 - i : 08 - l : 00 - k : 02 - b : f6
r : 03 - i : 08 - l : 00 - k : 03 - b : 77 - k : 03 - b : 29
r : 04 - i : 08 - l : 00 - k : 04 - b : 19
r : 05 - i : 08 - l : 00 - k : 05 - b : 27 - k : 05 - b : 8d
r : 06 - i : 08 - l : 00 - k : 06 - b : 07 - k : 10 - b : 94
r : 07 - i : 08 - l : 00 - k : 07 - b : f4
r : 08 - i : 08 - l : 00 - k : 08 - b : c5 - k : 08 - b : 35
r : 09 - i : 08 - l : 00 - k : 09 - b : 7e
r : 10 - i : 08 - l : 00 - k : 10 - b : 9e
r : 11 - i : 08 - l : 00 - k : 11 - b : 03
== 6c ===============
r : 00 - i : 09 - l : 00 - k : 15 - b : 74
r : 01 - i : 09 - l : 00 - k : 14 - b : d3
r : 02 - i : 09 - l : 00 - k : 13 - b : 3c
r : 03 - i : 09 - l : 00 - k : 12 - b : 27 - k : 03 - b : 9d
r : 04 - i : 09 - l : 00 - k : 11 - b : ac
r : 05 - i : 09 - l : 00 - k : 10 - b : 3f - k : 05 - b : 3a
r : 06 - i : 09 - l : 00 - k : 09 - b : bc - k : 10 - b : 68
r : 07 - i : 09 - l : 00 - k : 08 - b : 96
r : 08 - i : 09 - l : 00 - k : 07 - b : a7 - k : 08 - b : 56
r : 09 - i : 09 - l : 00 - k : 06 - b : 0b
r : 10 - i : 09 - l : 00 - k : 05 - b : 61
r : 11 - i : 09 - l : 00 - k : 04 - b : 95
== 61 ===============
r : 00 - i : 10 - l : 00 - k : 00 - b : 38
r : 01 - i : 10 - l : 00 - k : 01 - b : c8
r : 02 - i : 10 - l : 00 - k : 02 - b : 60
r : 03 - i : 10 - l : 00 - k : 03 - b : 76
r : 04 - i : 10 - l : 00 - k : 04 - b : 18
r : 05 - i : 10 - l : 00 - k : 05 - b : 7c - k : 05 - b : 21
r : 06 - i : 10 - l : 00 - k : 06 - b : 82
r : 07 - i : 10 - l : 00 - k : 07 - b : de - k : 07 - b : 0d
r : 08 - i : 10 - l : 00 - k : 08 - b : b8 - k : 08 - b : aa
r : 09 - i : 10 - l : 00 - k : 09 - b : a1
r : 10 - i : 10 - l : 00 - k : 10 - b : e1 - k : 06 - b : 1a
r : 11 - i : 10 - l : 00 - k : 11 - b : 8f
== 7a ===============
r : 00 - i : 11 - l : 00 - k : 15 - b : aa
r : 01 - i : 11 - l : 00 - k : 14 - b : ba
r : 02 - i : 11 - l : 00 - k : 13 - b : 1e
r : 03 - i : 11 - l : 00 - k : 12 - b : 48
r : 04 - i : 11 - l : 00 - k : 11 - b : 44
r : 05 - i : 11 - l : 00 - k : 10 - b : 5f - k : 05 - b : 4b
r : 06 - i : 11 - l : 00 - k : 09 - b : 85
r : 07 - i : 11 - l : 00 - k : 08 - b : 8e - k : 07 - b : 65
r : 08 - i : 11 - l : 00 - k : 07 - b : f5 - k : 08 - b : 7c
r : 09 - i : 11 - l : 00 - k : 06 - b : d7
r : 10 - i : 11 - l : 00 - k : 05 - b : 73 - k : 06 - b : bc
r : 11 - i : 11 - l : 00 - k : 04 - b : f7
== 30 ===============
r : 00 - i : 00 - l : 01 - k : 00 - b : dd - k : 01 - b : fc
r : 01 - i : 00 - l : 01 - k : 01 - b : 32
r : 02 - i : 00 - l : 01 - k : 02 - b : d2
r : 03 - i : 00 - l : 01 - k : 03 - b : 4a
r : 04 - i : 00 - l : 01 - k : 04 - b : 8a
r : 05 - i : 00 - l : 01 - k : 05 - b : c0
r : 06 - i : 00 - l : 01 - k : 06 - b : 11
r : 07 - i : 00 - l : 01 - k : 07 - b : a9 - k : 08 - b : 0e
r : 08 - i : 00 - l : 01 - k : 08 - b : 03
r : 09 - i : 00 - l : 01 - k : 09 - b : 76 - k : 10 - b : e3
r : 10 - i : 00 - l : 01 - k : 10 - b : 48 - k : 07 - b : 1d
r : 11 - i : 00 - l : 01 - k : 11 - b : ad

...

== 0a ===============
r : 00 - i : 00 - l : 03 - k : 00 - b : f3 - k : 03 - b : 84
r : 01 - i : 00 - l : 03 - k : 01 - b : 6d
r : 02 - i : 00 - l : 03 - k : 02 - b : 42
r : 03 - i : 00 - l : 03 - k : 03 - b : 57
r : 04 - i : 00 - l : 03 - k : 04 - b : f1
r : 05 - i : 00 - l : 03 - k : 05 - b : c5
r : 06 - i : 00 - l : 03 - k : 06 - b : 37
r : 07 - i : 00 - l : 03 - k : 07 - b : 57 - k : 10 - b : 86
r : 08 - i : 00 - l : 03 - k : 08 - b : 99
r : 09 - i : 00 - l : 03 - k : 09 - b : 46 - k : 12 - b : aa
r : 10 - i : 00 - l : 03 - k : 10 - b : 8a - k : 09 - b : 50
r : 11 - i : 00 - l : 03 - k : 11 - b : c0

...

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.