AVR-Crypto-Lib
for an english version of this site go to Crypto-avr-lib/en.
Wo finde ich das
SVN: [1]
via Track (auch svn, aber geeignet zum direkten Browsen):[2]
Short Facts
- kleine Implementierungen von Kryptofunktionen in C (fast alle Mikrocontroller)
- noch kleinere Implementierungen von Kryptofunktionen in Assembler (ATmega, gnu-avr-as)
- alle Funktionen sind reentrant (außer den Funktionen des Zufallsgenerators "Entropium")
- Lizenz: GPLv3 (nahezu alles) (andere Lizenz auf Anfrage beim Autor)
About
Die crypto-avr-lib stellt ein Reihe kryptographischer Funktionen für Atmels AVR Mikrocontroller zur Verfügung. Aufgrund der besonderen Begrenzungen in Mikrocontrollern (sehr wenig Speicher, sowohl RAM als auch Flash bewegen sich je nach Controller im Byte- oder unteren KiB-Bereich) kann in der Regel keine Standard- oder Referenzimplementierung (in C) für den Mikrocontroller genutzt werden. Daher werden hier sowohl an die Anforderungen angepasste C Implementierungen zur Verfügung gestellt (die sich auch leicht auf andere Systeme portieren lassen) wie auch optimierte Assembler-Implementierungen.
Was soll rein
Symmetrisch
Block
aes* | cast6 | twofish |
idea | kasumi | misty-1 |
shacal-2 | E2 | mars |
*=(davon gibt es eigentlich schon eine Menge)
Stream
seal | Turing |
Rabbit | mickey-128 |
Hashes
- ripemd
- whirlpool
Asymmetrisch
DH | RSA | ElGamal |
EC | DSA |
Was ist da
Symmetrisch
Block
- XTEA
- CAST5
- Camellia
- Skipjack
- Noekeon
- RC5
- RC6
- SEED
- DES
- TDES (aka EDE-DES, 3DES)
- SHABEA
- Serpent
- Present
Stream
- ARCFOUR (RC4 kompatibel)
- Trivium
- Grain
Asymmetrisch
Hashes
- SHA-256
- SHA-1
- MD5
Sonstiges
- HMAC-SHA256 (nach RFC 2104)
- PRNG
Facts
Blockchiffren
Name | Variante | Sprache | Größe (Flash) (Bytes) | Größe (Kontext) (Bytes) | Größe (Stack) (Bytes) | Schlüssellänge (Bits) | Blockgröße (Bits) | Taktzyklen (Initialisierung) | Taktzyklen (Verschlüsselung) | Taktzyklen (Entschlüsselung) | Nessie test | Angriffe | Paper | Lizenz / Patente | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AES | 128 | C | 2668 | 176 | 128 | 128 | 4632 | 21279 | 39340 | ok | |||||
AES | 192 | C | 2668 | 208 | 192 | 128 | 5082 | 25724 | 47799 | ok | |||||
AES | 256 | C | 2668 | 240 | 256 | 128 | 6161 | 30174 | 56253 | ok | |||||
AES | 128 | Asm | 2070 | 176 | 128 | 128 | 2039 | 2555 | 6764 | unconfirmed | |||||
AES | 192 | Asm | 2070 | 208 | 128 | 128 | 2267 | 3039 | 8164 | unconfirmed | |||||
AES | 256 | Asm | 2070 | 240 | 128 | 128 | 2852 | 3521 | 9562 | unconfirmed | |||||
AES | 128-fastdec | Asm | 2580 | 176 | 128 | 128 | 2039 | 2555 | 3193 | unconfirmed | |||||
AES | 192-fastdec | Asm | 2580 | 208 | 128 | 128 | 2267 | 3039 | 3819 | unconfirmed | |||||
AES | 256-fastdec | Asm | 2580 | 240 | 128 | 128 | 2852 | 3521 | 4443 | unconfirmed | |||||
Camellia | C | C | 8694 | 32 | 128 | 128 | 10190 | 43200 | 44066 | unconfirmed | |||||
Camellia | C+Asm | C+Asm | 4088 | 32 | 128 | 128 | 11115 | 10185 | 10217 | unconfirmed | |||||
Cast5 | C | C | 14312 | 75 | 0 – 128 | 64 | 13742 | 12550 | 13109 | unconfirmed | |||||
RC5 | RC5-32/r/b | C | 1650 | 3+(8*#Runden+1) | 1 – 2040 | 79352 | 7827 | 7223 | unconfirmed | US-Patent 5,724,428 expires: 03/03/2015 | |||||
RC6 | RC6-32/r/b | C | 2780 | 19+(8*#Runden) | 1 – 2040 | 128 | 139940 | 26600 | 25986 | unconfirmed | |||||
Noekeon | C | C | 1616 | 0 (16) | 128 | 128 | 26037 | 25798 | 26396 | unconfirmed | |||||
Noekeon | Asm | Asm | 774 | 0 (16) | 128 | 128 | 10416 | 10191 | 10745 | unconfirmed | |||||
DES | C | C | 2642 | 0 | 56 | 64 | – | 284952 | 284977 | unconfirmed | |||||
TDES | C | C | 2642 | 0 | 168 | 64 | – | 852082 | 852107 | unconfirmed | |||||
Serpent | Non-bitslice | C | 3064 | 528 | 1 – 256 | 128 | 537021 | 492884 | 493004 | unconfirmed | |||||
Serpent | Non-bitslice, small | Asm | 1290 | 528 | 1 – 256 | 128 | 114844 | 105771 | 105871 | unconfirmed | |||||
Serpent | Non-bitslice, fast | Asm | 1400 | 528 | 1 – 256 | 128 | 110582 | 101648 | 101743 | unconfirmed | |||||
Serpent | bitslice | C | 4482 | 528 | 1 – 256 | 128 | 102098 | 70827 | 70462 | unconfirmed | |||||
Skipjack | C | C | 1144 | 0 | 80 | 64 | – | 38109 | 38450 | unconfirmed | |||||
Present | C | C | 1514 | 256 | 80 | 64 | 30395 | 105796 | 151624 | unconfirmed | |||||
SEED | C | C | 3726 | 16 | 128 | 128 | 181 | 56906 | 56427 | unconfirmed | |||||
SEED | Asm | Asm | 1656 | 16 | 128 | 128 | 181 | 11401 | 11394 | unconfirmed | |||||
XTEA | C | C | 820 | 0 | 128 | 64 | – | 9912 | 9789 | unconfirmed | |||||
XTEA | Asm | Asm | 504 | 0 | 128 | 64 | – | 7687 | 7688 | unconfirmed | |||||
Shabea | C | C | 1988 | 0 | 0 – infinit | 256 | unconfirmed | ||||||||
Threefish-256 | Asm | Asm | 5068 | 64 | 256 | 256 | 375 | 40936 | 40912 | unconfirmed | |||||
Threefish-512 | Asm | Asm | 5068 | 96 | 512 | 512 | 547 | 93020 | 93240 | unconfirmed | |||||
Threefish-1024 | Asm | Asm | 5068 | 160 | 1024 | 1024 | 892 | 220606 | 218694 | unconfirmed | |||||
Threefish-256 | C | C | 19752 | 64 | 256 | 256 | 806 | 229592 | 223251 | unconfirmed | |||||
Threefish-512 | C | C | 19752 | 96 | 512 | 512 | 1299 | 453625 | 440279 | unconfirmed | |||||
Threefish-1024 | C | C | 19752 | 160 | 1024 | 1024 | 2267 | 1033056 | 1010445 | unconfirmed | |||||
Name | Variante | Sprache | Größe (Flash) (Bytes) | Größe (Kontext) (Bytes) | Größe (Stack) (Bytes) | Schlüssellänge (Bits) | Blockgröße (Bits) | Taktzyklen (Initialisierung) | Taktzyklen (Verschlüsselung) | Taktzyklen (Entschlüsselung) | Nessie test | Angriffe | Paper | Lizenz / Patente |
Stromchiffren
Name | Variante | Sprache | Größe (Flash) (Bytes) | Größe (Kontext) (Bytes) | Größe (Stack) (Bytes) | Schlüssellänge (Bits) | Ausgabegröße (Bits) | Taktzyklen (Initialisierung) | Taktzyklen (Generierung) | Angriffe | Paper | Lizenz / Patente |
---|---|---|---|---|---|---|---|---|---|---|---|---|
ARCFOUR | C | C | 230 | 258 | 8 – 2040 | 8 | 64086 | 56 | ||||
ARCFOUR | Asm | Asm | 112 | 258 | 8 – 2040 | 8 | 6689 | 42 | ||||
Trivium | C | C | 424 | 36 | 80 | 1 | 775726 | 665 | ||||
Grain | C | C | 778 | 20 | 80 | 1 | 107366 | 617 | ||||
MUGI | C | C | 3500 | 152 | 128 | 64 | 113886 | 4105 |
Hashes
Name | Variante | Sprache | Größe (Flash) (Bytes) | Größe (Kontext) (Bytes) | Größe (Stack) (Bytes) | Länge des Hash-Wertes (Bits) | Blockgröße (Bits) | Taktzyklen (Initialisierung) | Taktzyklen (pro Block) | Taktzyklen (per byte) | Taktzyklen (Finalisierung) | Angriffe | Paper | Lizenz / Patente |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Blake-28 | C | C | 3508 | 53 | 192 | 224 | 512 | 343 | 71340 | 1114.69 | 71907 | |||
Blake-32 | C | C | 6684 | 53 | 192 | 256 | 512 | 344 | 71340 | 1114.69 | 71975 | |||
Blake-48 | C | C | 3508 | 101 | 376 | 384 | 1024 | 884 | 510637 | 3989.35 | 518644 | |||
Blake-64 | C | C | 6684 | 101 | 376 | 512 | 1024 | 885 | 510637 | 3989.35 | 521119 | |||
BlueMidnightWish-224 | size | C | 4478 | 68 | 288 | 224 | 512 | 404 | 109548 | 1711.69 | 220709 | |||
BlueMidnightWish-224 | C | C | 6721 | 68 | 470 | 224 | 512 | 404 | 88759 | 1386.86 | 179107 | |||
BlueMidnightWish-224 | seperate | asm | 1536 | 68 | 246 | 224 | 512 | 509 | 52979 | 827.80 | 106634 | |||
BlueMidnightWish-224 | tiny | asm | 1590 | 68 | 246 | 224 | 512 | 509 | 52979 | 827.80 | 106640 | |||
BlueMidnightWish-224 | asm | asm | 3274 | 68 | 250 | 224 | 512 | 229 | 31421 | 490.95 | 63422 | |||
BlueMidnightWish-256 | size | C | 4478 | 68 | 288 | 256 | 512 | 404 | 109548 | 1711.69 | 220737 | |||
BlueMidnightWish-256 | C | C | 6721 | 68 | 470 | 256 | 512 | 404 | 88759 | 1386.86 | 179131 | |||
BlueMidnightWish-256 | seperate | asm | 1536 | 68 | 246 | 256 | 512 | 513 | 52979 | 827.80 | 106659 | |||
BlueMidnightWish-256 | tiny | asm | 1590 | 68 | 246 | 256 | 512 | 515 | 52979 | 827.80 | 106659 | |||
BlueMidnightWish-256 | asm | asm | 3274 | 68 | 250 | 256 | 512 | 231 | 31421 | 490.95 | 63455 | |||
BlueMidnightWish-384 | size | C | 17729 | 132 | 914 | 384 | 1024 | 2004 | 382079 | 2984.99 | 767017 | |||
BlueMidnightWish-384 | C | C | 17729 | 132 | 914 | 384 | 1024 | 2004 | 382079 | 2984.99 | 767017 | |||
BlueMidnightWish-512 | size | C | 17729 | 132 | 914 | 512 | 1024 | 2005 | 382079 | 2984.99 | 767125 | |||
BlueMidnightWish-512 | C | C | 17729 | 132 | 914 | 512 | 1024 | 2005 | 382079 | 2984.99 | 767125 | |||
CubeHash-224 | C | C | 1502 | 130 | 76 | 224 | 256 | 635986 | 64027 | 2000.84 | 700639 | |||
CubeHash-256 | C | C | 1502 | 130 | 76 | 256 | 256 | 635986 | 64027 | 2000.84 | 700664 | |||
CubeHash-384 | C | C | 1502 | 130 | 76 | 384 | 256 | 635986 | 64027 | 2000.84 | 700802 | |||
CubeHash-512 | C | C | 1502 | 130 | 76 | 512 | 256 | 635986 | 64027 | 2000.84 | 700934 | |||
ECHO-224 | C | C | 4324 | 90 | 585 | 224 | 1536 | 450 | 222446 | 1158.57 | 223610 | |||
ECHO-256 | C | C | 4324 | 90 | 585 | 256 | 1536 | 454 | 222446 | 1158.57 | 223635 | |||
ECHO-384 | C | C | 4324 | 154 | 521 | 384 | 1024 | 841 | 275324 | 2150.97 | 276329 | |||
ECHO-512 | C | C | 4324 | 154 | 521 | 512 | 1024 | 828 | 275324 | 2150.97 | 276441 | |||
Groestl-224 | C | C | 2234 | 68 | 250 | 224 | 512 | 323 | 522120 | 8158.12 | 783256 | |||
Groestl-256 | C | C | 2234 | 68 | 250 | 256 | 512 | 323 | 522120 | 8158.12 | 783289 | |||
Groestl-384 | C | C | 2330 | 132 | 450 | 384 | 1024 | 662 | 1459656 | 11403.56 | 2189646 | |||
Groestl-512 | C | C | 2330 | 132 | 450 | 512 | 1024 | 661 | 1459656 | 11403.56 | 2189774 | |||
Keccak-224 | C | C | 2889 | 206 | 412 | 224 | 1152 | 1049 | 642795 | 4463.85 | 643979 | |||
Keccak-256 | C | C | 2889 | 206 | 404 | 256 | 1088 | 1049 | 642707 | 4725.79 | 643875 | |||
Keccak-384 | C | C | 2889 | 206 | 372 | 384 | 832 | 1049 | 642355 | 6176.49 | 643456 | |||
Keccak-512 | C | C | 2889 | 206 | 340 | 512 | 576 | 1049 | 642003 | 8916.71 | 643043 | |||
MD5 | C | C | 2506 | 20 | 172 | 128 | 512 | 32 | 42642 | 666.28 | 43057 | |||
MD5 | asm | asm | 1686 | 20 | 117 | 128 | 512 | 32 | 18258 | 285.28 | 18556 | |||
SHA-1 | C | C | 2526 | 28 | 225 | 160 | 512 | 52 | 75766 | 1183.84 | 76762 | |||
SHA-1 | asm | asm | 1022 | 28 | 170 | 160 | 512 | 181 | 37030 | 578.59 | 37275 | |||
SHA-256 | C | C | 3240 | 40 | 405 | 256 | 512 | 225 | 177455 | 2772.73 | 181789 | |||
SHA-256 | asm | asm | 1598 | 40 | 376 | 256 | 512 | 298 | 50125 | 783.20 | 50479 | |||
Shabal-192 | C | C | 2312 | 188 | 106 | 192 | 512 | 1549 | 59423 | 928.48 | 231621 | |||
Shabal-192 | asm | asm | 1580 | 188 | 90 | 192 | 512 | 1047 | 13689 | 213.89 | 50762 | |||
Shabal-224 | C | C | 2312 | 188 | 106 | 224 | 512 | 1549 | 59423 | 928.48 | 231650 | |||
Shabal-224 | asm | asm | 1580 | 188 | 90 | 224 | 512 | 1047 | 13689 | 213.89 | 50793 | |||
Shabal-256 | C | C | 2312 | 188 | 106 | 256 | 512 | 1549 | 59423 | 928.48 | 231699 | |||
Shabal-256 | asm | asm | 1580 | 188 | 90 | 256 | 512 | 1047 | 13689 | 213.89 | 50825 | |||
Shabal-384 | C | C | 2312 | 188 | 106 | 384 | 512 | 1549 | 59423 | 928.48 | 231824 | |||
Shabal-384 | asm | asm | 1580 | 188 | 90 | 384 | 512 | 1047 | 13689 | 213.89 | 50930 | |||
Shabal-512 | C | C | 2312 | 188 | 106 | 512 | 512 | 1549 | 59423 | 928.48 | 231952 | |||
Shabal-512 | asm | asm | 1578 | 188 | 90 | 512 | 512 | 1047 | 13689 | 213.89 | 51050 | |||
Skein-1024-1024 | C | C | 7130 | 146 | 643 | 1024 | 1024 | 1124414 | 1122133 | 8766.66 | 2245416 | |||
Skein-1024-1024 | asm | asm | 2486 | 146 | 487 | 1024 | 1024 | 222141 | 220067 | 1719.27 | 441455 | |||
Skein-1024-128 | C | C | 7130 | 146 | 643 | 128 | 1024 | 1124414 | 1122133 | 8766.66 | 2244520 | |||
Skein-1024-128 | asm | asm | 2486 | 146 | 487 | 128 | 1024 | 222141 | 220067 | 1719.27 | 440669 | |||
Skein-1024-160 | C | C | 7130 | 146 | 643 | 160 | 1024 | 1124414 | 1122133 | 8766.66 | 2244552 | |||
Skein-1024-160 | asm | asm | 2486 | 146 | 487 | 160 | 1024 | 222141 | 220067 | 1719.27 | 440697 | |||
Skein-1024-224 | C | C | 7130 | 146 | 643 | 224 | 1024 | 1124414 | 1122133 | 8766.66 | 2244616 | |||
Skein-1024-224 | asm | asm | 2486 | 146 | 487 | 224 | 1024 | 222141 | 220067 | 1719.27 | 440753 | |||
Skein-1024-256 | C | C | 7130 | 146 | 643 | 256 | 1024 | 1124414 | 1122133 | 8766.66 | 2244648 | |||
Skein-1024-256 | asm | asm | 2486 | 146 | 487 | 256 | 1024 | 222141 | 220067 | 1719.27 | 440781 | |||
Skein-1024-384 | C | C | 7130 | 146 | 643 | 384 | 1024 | 1124414 | 1122133 | 8766.66 | 2244776 | |||
Skein-1024-384 | asm | asm | 2486 | 146 | 487 | 384 | 1024 | 222141 | 220067 | 1719.27 | 440893 | |||
Skein-1024-512 | C | C | 7130 | 146 | 643 | 512 | 1024 | 1124414 | 1122133 | 8766.66 | 2244904 | |||
Skein-1024-512 | asm | asm | 2486 | 146 | 487 | 512 | 1024 | 222141 | 220067 | 1719.27 | 441005 | |||
Skein-256-128 | C | C | 4986 | 50 | 281 | 128 | 256 | 233990 | 232285 | 7258.91 | 465291 | |||
Skein-256-128 | asm | asm | 2052 | 50 | 194 | 128 | 256 | 39911 | 38606 | 1206.44 | 77830 | |||
Skein-256-160 | C | C | 4986 | 50 | 281 | 160 | 256 | 233990 | 232285 | 7258.91 | 465323 | |||
Skein-256-160 | asm | asm | 2052 | 50 | 194 | 160 | 256 | 39911 | 38606 | 1206.44 | 77858 | |||
Skein-256-224 | C | C | 4986 | 50 | 281 | 224 | 256 | 233990 | 232285 | 7258.91 | 465387 | |||
Skein-256-224 | asm | asm | 2052 | 50 | 194 | 224 | 256 | 39911 | 38606 | 1206.44 | 77914 | |||
Skein-256-256 | C | C | 4986 | 50 | 281 | 256 | 256 | 233990 | 232285 | 7258.91 | 465419 | |||
Skein-256-256 | asm | asm | 2052 | 50 | 194 | 256 | 256 | 39911 | 38606 | 1206.44 | 77944 | |||
Skein-256-384 | C | C | 4986 | 50 | 281 | 384 | 256 | 233990 | 232285 | 7258.91 | 698164 | |||
Skein-256-384 | asm | asm | 2052 | 50 | 194 | 384 | 256 | 39911 | 38606 | 1206.44 | 116992 | |||
Skein-256-512 | C | C | 4986 | 50 | 281 | 512 | 256 | 233990 | 232285 | 7258.91 | 698292 | |||
Skein-256-512 | asm | asm | 2052 | 50 | 194 | 512 | 256 | 39911 | 38606 | 1206.44 | 117103 | |||
Skein-512-1024 | C | C | 5466 | 82 | 399 | 1024 | 512 | 487951 | 486054 | 7594.59 | 1460518 | |||
Skein-512-1024 | asm | asm | 2154 | 82 | 291 | 1024 | 512 | 93984 | 92429 | 1444.20 | 279124 | |||
Skein-512-128 | C | C | 5466 | 82 | 399 | 128 | 512 | 487951 | 486054 | 7594.59 | 972682 | |||
Skein-512-128 | asm | asm | 2154 | 82 | 291 | 128 | 512 | 93984 | 92429 | 1444.20 | 185447 | |||
Skein-512-160 | C | C | 5466 | 82 | 399 | 160 | 512 | 487951 | 486054 | 7594.59 | 972714 | |||
Skein-512-160 | asm | asm | 2154 | 82 | 291 | 160 | 512 | 93984 | 92429 | 1444.20 | 185475 | |||
Skein-512-224 | C | C | 5466 | 82 | 399 | 224 | 512 | 487951 | 486054 | 7594.59 | 972778 | |||
Skein-512-224 | asm | asm | 2154 | 82 | 291 | 224 | 512 | 93984 | 92429 | 1444.20 | 185531 | |||
Skein-512-256 | C | C | 5466 | 82 | 399 | 256 | 512 | 487951 | 486054 | 7594.59 | 972810 | |||
Skein-512-256 | asm | asm | 2154 | 82 | 291 | 256 | 512 | 93984 | 92429 | 1444.20 | 185559 | |||
Skein-512-384 | C | C | 5466 | 82 | 399 | 384 | 512 | 487951 | 486054 | 7594.59 | 972938 | |||
Skein-512-384 | asm | asm | 2154 | 82 | 291 | 384 | 512 | 93984 | 92429 | 1444.20 | 185671 | |||
Skein-512-512 | C | C | 5466 | 82 | 399 | 512 | 512 | 487951 | 486054 | 7594.59 | 973066 | |||
Skein-512-512 | asm | asm | 2154 | 82 | 291 | 512 | 512 | 93984 | 92429 | 1444.20 | 185785 | |||
Twister-224 | C | C | 3248 | 80 | 250 | 224 | 512 | 398 | 240983 | 3765.36 | 509259 | |||
Twister-224 | asm | asm | 1614 | 80 | 2566 | 224 | 512 | 517 | 164208 | 2565.75 | 347203 | |||
Twister-256 | C | C | 3248 | 80 | 250 | 256 | 512 | 398 | 240983 | 3765.36 | 509395 | |||
Twister-256 | asm | asm | 1614 | 80 | 228 | 256 | 512 | 395 | 164208 | 2565.75 | 347264 | |||
Twister-384 | C | C | 3822 | 144 | 252 | 384 | 512 | 715 | 269537 | 4211.52 | 860078 | |||
Twister-384 | asm | asm | 2156 | 144 | 228 | 384 | 512 | 722 | 183008 | 2859.50 | 585820 | |||
Twister-512 | C | C | 3822 | 144 | 252 | 512 | 512 | 715 | 269537 | 4211.52 | 967704 | |||
Twister-512 | asm | asm | 2156 | 144 | 228 | 512 | 512 | 723 | 183008 | 2859.50 | 659311 |
MACs
Name | Variante | Sprache | Größe (Flash) (Bytes) | Größe (Kontext) (Bytes) | Größe (Stack) (Bytes) | Schlüssellänge (Bits) | Blockgröße (Bits) | Taktzyklen (Initialisierung) | Taktzyklen (pro Block) | Taktzyklen (Finalisierung) | Angriffe | Paper | Lizenz / Patente |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
HMAC-SHA256 | C | 2712 (incl. SHA256) | 40 | beliebig | 512 | ||||||||
HMAC-SHA1 | C | 2182 (incl. SHA1) | 28 | beliebig | 512 | ||||||||
OMAC-Noekeon | Asm | 1184 (incl. Noekeon) | 16 | 128 | 128 | 95 | 10533 | 21474 | |||||
OMAC-Noekeon | C | 1284 (incl. Noekeon) | 16 | 128 | 128 | 95 | 10589 | 21741 |
PRNGs
Name | Variante | Sprache | Größe (Flash) (Bytes) | Größe (Kontext) (Bytes) | Größe (Stack) (Bytes) | Blockgröße (Bits) | Taktzyklen (Eingabes) | Taktzyklen (Ausgabe) | Angriffe | Paper | Lizenz / Patente |
---|---|---|---|---|---|---|---|---|---|---|---|
Entropium | C | 2174 | 64 | 256 |