Fix Simon-64 and Speck-64 CTR mode

This fixes CTR mode for IA-32. We were only incrementing half the counters.
Added additional test vectors
pull/548/head
Jeffrey Walton 2017-12-07 16:55:23 -05:00
parent fe257e92a9
commit 07f2a4fc3f
No known key found for this signature in database
GPG Key ID: B36AB348921B1838
5 changed files with 607 additions and 61 deletions

View File

@ -228,6 +228,233 @@ Ciphertext: 3dc606b9 14a34c06 d9f25320 92d06278 fa6f4a70 13065734 15d9143f be0ef
3a51d3b3 b2b5610b 217c9a57 e7c50e8a 3c87af48 fc6abca2 70a9c7c0 25a6798d
Test: Encrypt
AlgorithmType: SymmetricCipher
Name: SIMON-64/CTR
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 066053e8 76ece34e 9126f0c7
IV: 1ac29087 424ae16e
Plaintext: 836f08de d972ce87 14047c34 47f942c7 613a3fb6 ce2bed34 66c56254 6043dd17 \
62ac0f67 05558b01 b06bfefb ef1a6c9c 0ad1fa80 ed858c92 5af47c95 08e0c5f2 \
86ecc321 fcd3d2dd d1925b3c c9319772 005114d6 c0c625c2 e101d7fc 3a6f27fe \
a643f5d0 b751a1d3 1d6b5347 d1b5f8e5 fffe7477 d50d31e2 6aa83ee7 6e55b69b
Ciphertext: 89b64cb8 4760d216 77ff5f63 c9fb1244 96da7989 79480b69 efb9eaa2 80fbed07 \
306d9945 51e6dd75 c9e1d294 ce99bbe6 0181fd49 aaf50168 c74ca188 c9b90ed0 \
82003084 9442a282 ca2c0269 54015cb0 71f8f510 1c195120 4e7ede94 b54f5d3b \
d0681548 73339cec 5368e3f6 1d3bcedf 38495bde cfcdb35f 1326fc04 89275180
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: bb980229 ebd3ba64 44215cae
IV: af8bbc11 54b28bcd
Plaintext: 6467ab0d b7623968 dac5e270 7c87e009 5676773f 07671013 2abdeaed 28acd5f2 \
00a49802 bdc516e5 ebd0b880 76253f8c 82a474c1 26da4fc2 54d3c176 702bb711 \
7c4a5d89 bbf7aa12 854e42c6 3585a1da d6f019b1 d46bfaee d457a4f0 63ba71b5 \
c165f1e8 046d1dda 1786d6b0 1a24d33a 5e590a1c 3a5b70f9 cd666607 80ded5ff
Ciphertext: 97b4db28 944579f2 e8899698 dd60fcc0 86dd327b 91a13bee 5a5789ea 7b6ea3ce \
16b43ac5 f9608c22 b61cefd0 cc7ce18d bc8cc34c f93990c5 357a4c1c f168d637 \
aa0df39c ced8f87a 7a33661b 10431fa6 29cf947e b808bf26 8170f1a2 a9dc5f3a \
159c0481 f4e911a0 68063f72 377438b8 ebc06c68 52c8743d 7444c622 95f24426
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: a1398395 3d759cd0 4dec3172
IV: c221c6c6 51d3d677
Plaintext: 64f51624 3d85dda1 0fad6dd7 7b2cb092 99670609 bb994060 41e72571 cd5fd412 \
18558e1b 6b19064f 2ea6ecd0 0d9efda5 be06f844 d191e1d0 6178be85 8cfda8c0 \
35620ed0 8c3023a1 bd775278 e735c94a 73043354 d38f3652 a69db1cd 3697d649 \
16788962 c68f3b31 effe0542 51d12c66 4a1dd81b 2ae23513 45ba247b eecedca7
Ciphertext: b64ca306 8074ba6d 12233afa a0d8b398 7a5c77ae ab14ef33 65057733 788a8d9b \
ae799565 8ba948ba 8d0b4a44 9f81b022 b9a07d9c 2f0d31b6 3a8cc339 0aa58299 \
82ce8cdc 6f5f07be 601fe84e 79fab70a fa82483c a9678094 fe38fe60 d22d74c3 \
83cef44c d8c95eaf 9d391ca5 eb8f3752 6b2048c8 9b88eaa2 4ef8d0a5 60b7f8a2
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 5210201b 6e1e95ed fe77dc45
IV: 6c135049 5e4ce9d4
Plaintext: 3b15ac81 91147797 495ae33d 3e25c0a3 27c20cf4 2dbe3443 f7e2035e 08118103 \
42c8fe01 e149bd0b 62d9f1a1 577175bd 529af04e 59dc353d cbf5b2e3 bc7d2401 \
727ff707 bb58ac74 f31c50ec b101b9b6 fb0d5a32 53fab5cd a1694a1a 3c0684d4 \
9a825c1b 6d7c0ece 6d9600ed 03eeebf7 3c907717 8ee0fea7 66da8ab1 f607f39e
Ciphertext: e181dd0e 91c4e950 2afd3c6c 3107bac2 e3962dc3 435009cc 574f3d7c f8928e4e \
575c5df2 bcf16bf5 21bf7e06 8714cba0 6967b061 8ba0aafe fb6d3f5d cab617fd \
8d5f7a20 4125cd88 119f9255 f7907546 f3f82282 2dc46719 5956c238 8075fb7b \
98ac525d 078d5168 ecb8638b 35003fe7 3d33ddbf 79b3e781 547f6c30 f644661b
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 9ac69443 6639b7fb 4b465ab6
IV: 50aa2f90 b8201b8a
Plaintext: 5d7e580b 84b8b085 a73ae4ed a6191cea 367a80c3 22f0c968 3e32dbb5 686d9c83 \
0fd1f42a a2c78682 5ad71041 30127766 47b8691f 8e48a7f7 fadd7ae4 dd3596e3 \
b5adbd47 4a2a0efd defef79f a1cc1c45 b41eb822 30aa5522 714190c9 8c2c20da \
b072d557 13b0eb82 ce48ce95 f948fb18 c34a9d54 7c04b874 89105230 1ba3675b
Ciphertext: b0463ba2 8e4a2f88 99fbe7d2 8af60ddd 3ad4b9c5 fa0a6273 abf37c36 ec1de5a7 \
31937793 aa85679d c47724b2 5953006e ffbe7fd2 77012eec 8618b4a7 b590178d \
b9304902 88688d0b d9d1b816 aec6a091 022dc7d6 3409e0f6 b47fa888 5d3eb85f \
b58d8005 3537b60b 9ba4035e df4c0f98 a531ae11 a8d9a458 309cbdc3 d71eb25c
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 479fae05 f039e1f5 1a44be21
IV: 7c695d29 867c571f
Plaintext: b631e16f dfeecb7e bda6d104 45d26d9f b57f0050 c9fa2703 913297e5 eb0d99b7 \
ea0ec44d 6b4173be 1d9a6be1 5214d3b9 5bc2b06d 559d3ab7 79dea3fc 6a04a63c \
fa161ad6 82b3d0f5 51edd5c4 cfe4bf0b 05d7fb25 0662fb06 98e6cbaf fb76c45b \
f9d39424 4a712447 98d1766c 4cacdda6 67b962a4 91af5881 a2e623d6 c608ad0d
Ciphertext: fb3c288e 18670e61 9d3a8c19 ac6ba944 001d0844 431133aa 1404e8e8 532e2419 \
100e3c21 308d59e5 15d02d56 03fd0eed 0a92d46f 257bf8e2 da960b3c 8243c164 \
4ee3b130 a7865ab1 2c5cefc0 7e6dd216 c46e3b95 d9125193 41776f37 1b44a407 \
45912230 89b3cc5b 3a1346f8 6f4c2c7e 7ad77936 05372501 f65174c2 a408f87d
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 8eee7a0c f9bd1bae 030dc61a
IV: 0c08b22b f50ff2cb
Plaintext: 6fb9feb5 61de0669 a891c47e 7bb433cf 898f5f31 b038eed4 aee59faf 268d6951 \
e21d1819 029bef0a b892e07a 3ad3c7e2 3066ad96 8cd5d55b c6ad4811 44d0a911 \
91213e55 bf03b865 d14bc9e0 851bd2c2 f349b701 2aa09237 c6bf3ab7 2179cd64 \
a508bf48 1b1a2fa2 7ffbb4e8 7defd6e2 376d6ba3 7dfaf9b3 adac2a0f 1319a89c
Ciphertext: 96d35f2c 013de612 62d6f90f 6419db39 c8519f08 2d0e45b4 c4d4f2ff b17e5ae5 \
4b65c08a 28cb13bc 1a03345d c4fa1642 ce3f6561 5bc0625c 28e0428b e5bb27e4 \
aa74d1f1 d15f1697 5af6f8c3 31c2e43f 1ce29408 9c634dbb 536724fd b1a0502c \
e45903a1 12f9a091 2e2b9587 f8b3d2d9 8c1d12b7 c4cb2a7e f0f49570 4b41ea11
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 199d5a5f ae4a47ac c7f38e7c
IV: 71a3b3f8 d14c9ad5
Plaintext: 6aaa81df a3d70ca6 72e389ad c7963160 715a80ed 2a217701 14dfa2a6 a76c4abb \
f151e82d 179f3672 b8359eb5 c36fddd0 e83fbd41 c64d04ae 1283c29c ccb8d986 \
67663e9e 726f2dc1 1916c527 5225cd91 0659a728 24928c4a e0d89509 dd4429c5 \
b94e493e e0f7cb67 6e04abb8 2414e72b f0c6eae2 d88c5cb1 44164db1 90fb0553
Ciphertext: a2bca3c5 5890fb69 b4f3c5c7 9d130b83 e247627a 1b016413 744f1dac 634cc873 \
72546884 d64d89f5 79755713 20ceee41 0d08d17d 0f7f18e8 7797e0a0 e8dcc06f \
de713a42 082ece33 75368e42 f4c334e3 513fbe19 b61705c4 e8d308d8 4c79916a \
d2329ead 392f440f eeaee3aa 381efbce db388b50 a422f143 06df4f7e d294697a
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: eb66ab66 1d030578 0e7b8401
IV: e139b60f bd709b20
Plaintext: e6a6a6b0 9964cd3b 5c24e926 caec475a 08afb665 1aa32939 f646287f 23b2696c \
150836ef 89028fb7 f82547be 129b1e57 d7b71af3 2a515565 1f4d4fc2 b0fe41c1 \
ba8c88d9 14417b21 28497724 c85aa7ed fae8895e 95997d33 30b65ff1 c303b85f \
642da96e 695c369a 9aed3b97 a6ce31f7 4bd81b92 b9c62733 75c162de ab7cc1ac
Ciphertext: c39c76cf 12e76748 ff5b2326 e0355f7c 6e97efa9 89716fa4 a1b58f55 4e620d5c \
d0eba98f 7fba3eae 39316df0 296db0fd 10902b82 aa5c2de8 30bfa82f 815a1944 \
f9011c1b 9568d452 fe9d0b90 dbf8ca8b dc41c864 3e9452f4 255facf2 78921a6a \
45cc31dc 3d4cc1e9 c5132945 c72550c9 c79b0555 9e15231f 1271107f 60758b4a
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 0d8cabd5 4d64fa95 33cd3f2d
IV: 076dd257 c5cac3d7
Plaintext: fa27b35a a6bd2400 19463ef0 620049fe 6a7abe7d 9eefcbb9 2aec0249 71d564f8 \
454b8f2d 0bfd4f49 089989b7 a78ba949 1c9f56e6 abbab89f 202207ec 1db32d2a \
24c5d092 6bd0e94c 7a18927d 537f0448 6e4d0359 d7790914 5c047eda cc51caed \
9d5d03ed 03f25528 68a64c68 f7de41b9 270a01eb 42315df3 4273c183 6c73286c
Ciphertext: 250469e6 2fc5ace2 70d79eea eb92d153 6c542486 bfd995b5 81cd7f42 9248477e \
7b563d32 58b230e0 bae72c5f ec87a795 f7da89eb fc323746 35998d8f 0f959c0c \
94320a3b 33d88efe f0dcfaae dfd15d3c 883aaa7d f1c3a1c5 bae29fac 8ce22111 \
b6150408 26591464 8c184bc6 c7fa7aed f160b898 8d6e9ebe aaaa7048 c16e72f6
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 0d793258 a9f8b9ba 6e85c2b8
IV: d5b53735 8c3d4457
Plaintext: 89ab20e5 3d84be39 6b6c05be 00f018d1 0729af4d e5b7721e d77b3b57 7b6e09cc \
cfee4678 ab6c7d06 9837104c 88fa304d fe58a11a 3e2f28af 9948456f dc11255b \
020ade7d a191079e 49619975 29176830 0905204f 78322dad 3d9243a6 25fbda9a \
1208b3ee 209f29cf 27d89855 dc714ba2 1b5809de 7befcbb0 7fa20e5e 079ada39
Ciphertext: e1cd0451 182bb03f 1e07b888 32d5c952 96a77ab3 36e7543d c87c16f0 a83516ef \
ae09dac9 1cfd5124 82eb553b 1192bf1e dba38450 1c5b9700 1ce69a37 1b3e7c37 \
cc29a9aa ce892a0d 0bbabb58 4670a77b 4b93d600 ae2a9700 89aa783d 582d1a9a \
c4f03c24 de2a8857 46f2ba12 28860f93 e7d652da 8363a505 091668a4 8749f5f3
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 648e534c 14243d1c 822d3cb1
IV: d36912fd ffc68939
Plaintext: f3ab2562 8902613e 684f0328 e1fdbcea 5f2596e8 8c740ac5 9c6a9841 16dc2cbb \
44766fe6 4d7bf929 46ec3842 d8d99585 a79c5061 c6c20d95 142a5d1a c77aa589 \
b2a6ffd9 b302b6df 37f21298 d79dbd84 c651f7ff 90d7124b 19282242 99878986 \
9212612c de78fcd6 a1a1f2a3 0327cb3d 4dc1af8b 61111810 ad763365 d9a7e6ee
Ciphertext: c561f35f a8106045 6f20664f b7771bb9 2c4d84a0 9c0a982c 1b7c73b6 7a783933 \
7bb4819a 642fe356 813643a4 01d3e305 f177eb20 e4d06729 c7cd34bc 0f7956cb \
133d61c6 96e0d2a0 a5049f72 8dc50617 9f5b6564 331e7856 5166a916 d5ab59ca \
be702058 debfa8db 90efc752 4b39fa74 ca7cede8 9abdfdf1 596c8d25 fe473e52
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 35c0c64f dff6e5ae 126f2a25
IV: 40979dbf 6a9fbd27
Plaintext: 88225afc 2be9d843 1fded79a 243435d5 a2344037 2149fda2 8c5e8155 06afdc40 \
c3714a19 dd06b9d9 a89a3ca4 57f38fdb e793f9e8 bfeed811 e14da329 07fec042 \
d9982dc9 5bca6475 fc6d7c3f f1c9144b 6fa1146c 11fb1519 070de89e a062bbc4 \
47eaae9a c9adeaff e97fe964 9f632215 e9affc75 8b6cd2be 2a9177c1 010f45ce
Ciphertext: aae08fd2 a96f0efe 2b6a4bc4 516b19de 38ae394a 60ba12f3 2ca9b6aa f237969d \
12741a44 2acbef2d 12bb04d3 a221f02e 7eb1135a 9df4ee15 fb815c9a d2ca4a97 \
fa862ccc ce20d794 7d1de839 b46c2c95 c4b26658 fee99057 03b002f9 f39f088c \
d555a3e9 5afcd689 b1df45af 904a8fac d9766625 52b7cc1b 6f83cbed f2972ef7
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: ef266791 7fd55f40 a6fcbc3b
IV: 7a772d34 e84fc898
Plaintext: d88371f3 a7fd407b 3d01b5d7 2c3322d0 e23caef1 8375f0b5 c9054a18 b3d29c7a \
ed455c2d 8c199f10 928a3870 2f6a7b4b 6e5d8446 ad570186 112bbc5b d593bf1f \
f068a1f4 88b7f109 406cae24 bb38fafb ec6fe60c 1a503d4a d95584df e91a9ae1 \
c0b827eb e175ddd4 d5b5002f 4a0e3a22 ab223b6a 817e4ce3 fcde1b59 85d525c4
Ciphertext: 4ff2ff28 22d27364 7c9e8dae 47b55985 ca4d1e67 3e8a589c 76c1fa1e 053766e7 \
739cf3cd 4b0df05f 3c00d175 f18369d3 1ecabb92 36f907ad 029abf1f 6f34a1ca \
e6a5b75e a6a5b69c c347280a 763e0476 c6daa02c e3fe9c60 c326157f 134f92b3 \
ed12d1f6 1db1d511 dc43992c 8e05b2b3 a7656f9d 1b48e2fa d38b9585 caf818ba
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 6c92ee88 9a13613d ffe4dda8
IV: 5e0284a4 14a601a7
Plaintext: be02203d 9f13be03 19d071e6 f8700bb7 94636267 26c06bab d267826f b232f062 \
692bad33 6423f21a 7413b38b eaedfb07 ad8f1ec1 09da01ed 6222ed7a e480795a \
351ce397 5da27286 7b5bfcae 1e24c4d2 9a695051 c7435a53 e7399d66 ed163177 \
6507ee6a f26579de be1c0513 61c9ddb3 ea6848d3 a2735040 47178fa8 3842204f
Ciphertext: c45996b2 829ae403 8a4ed800 3307f879 cc56e1ba 4ef906fc 4668c863 893e7e42 \
4c6b7d36 9bc72de0 6b3ad2a9 84ef7fbf 354c1591 de060bd7 c6c7eec3 b0814424 \
0a7ec6a3 3f8e4035 3c7263c2 bc89cfc2 3a8170da 43720248 a7eee249 7ff2e491 \
095e3ee1 32a2346b 6c305e1b 795ca874 5ff8a3e1 0d2c63d2 fc3c5ee8 9b30c0ad
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Simon64/96, large block
Key: 125b5184 fa11bdc2 ba1c4afb
IV: de2443df df5ab452
Plaintext: 3495ff2f d5316b50 c73d25ba f574c955 9b657e3a 3afd48aa dd27a691 ab59bf55 \
6b0683d5 a574f5e4 588e7223 4f694549 72acf0c6 f059c19c 86a50b0e 80f02465 \
ab1da7d1 e49c0b21 3ffe6101 8cef9fc3 1076d0bd 5d52c703 5bb79726 867ac725 \
c2cf7f8f 54142fe3 0a8ecf4f 27591023 0079f5f0 926b5899 95f6f5b0 41c439b4
Ciphertext: 8f478528 ca718589 e0e0e2fc 2481a6e6 a99a4bd0 556f9d24 b39fa9ca 67faf9a8 \
4bb90edc 4b7fe771 faeb5b6a 8aa65b37 87459d31 9af7b200 e09523d0 9a0db5dc \
126a2d8b a2668f51 b8e99a58 6dc27a8d 8fdc0f42 be341c5d 844dfa08 e28ad7d5 \
d3a991b7 167598a1 c252cfb2 1e0b6b20 76c0e6e6 22adb00c 4c160f45 8ed860c4
Test: Encrypt
AlgorithmType: SymmetricCipher
Name: SIMON-128/ECB
#

View File

@ -202,6 +202,265 @@ Ciphertext: 6488fe92 2f575648 f99a1fad 3fcb1419 65178da6 79c58f4a \
d195732f 4dd297eb
Test: Encrypt
AlgorithmType: SymmetricCipher
Name: SPECK-64/CTR
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 01e008df d878622a 2b7ebf81
IV: aedda5ac 2793f82c
Plaintext: 37557546 ee59d585 114df2a7 a2db66dc 9aea6a40 f9e5656d 90432431 \
d059e328 57402739 fbaf9f1f 589949ad 377f3744 57c69fd4 69d0b709 \
d31fb7f6 d8a14035 cf2ee371 340d01c7 8b220556 49d05bdc 77e1dd77 \
f643e3dd 65654b5f 5eb44529 5d0f9c05 7a9a21ad 14ec629d 6e90840b \
23cba457 409dcad8 88bb5336 6ba834d5
Ciphertext: 453b3433 d64cccdb 8d091482 d8efa357 85ebd223 c9632635 9587eb0c \
9a5ca163 ef92dc46 f576fa30 5b092c89 c247888b fe950047 6642716e \
88d1374f 1eb7df21 c27f8d32 b810afa0 84122caa 5fd1e11c d2efd8a0 \
6823de24 5ee8db41 773cc65d 417ccfce b9b1b542 37ddf27a 5708ea54 \
9269d575 aee55f6d 4e4d43ee 2de13dc7
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: d3047e0e c3b589a3 46429a15
IV: f12bf8dd dd176834
Plaintext: fe51d579 48335bc5 bd68a329 c4e79399 81ca3195 fa20f4f4 f2127fe7 \
d7891cbc b3ed1ee4 c078d3aa db015f88 5ae333c1 846216ef 50880c20 \
9b317ad1 e9dcaacf 003765ec 889c9a82 ee9af56b 20883209 42f54beb \
44c9676c 9b2bacde d270201b 6a77f7b4 4fdc2e64 3db5baaa 50dc3569 \
50a9fc7a edd10aca 7f19a377 61c8b94f
Ciphertext: 6d6f6471 64cb6110 22dfdf1e 1c301a77 0bae9055 44e68917 c5bd5560 \
8d8830eb f8befcfb 961e599f 8011b446 6999434d 69275342 c57245c1 \
20bfad26 6ec3ce36 7620c2b6 30dd8be4 bf0a000c 199b2237 8043d2c6 \
ec345a78 996a40fa 8bc5362c 5ec206ed 9d64faeb e1f654be 6002fb4c \
6f7e5fe7 340c0b4b d88667f6 e38bf799
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 2085eca3 ab4e99fc e3117fc8
IV: b0f3d376 a6b7277e
Plaintext: 216a27d2 55a7d72a c9c69d3d 1b2e7faf 9bba051d b1e089af b2b1b6c8 \
1bb4f80b 62e9b2f6 8547fde1 7191efc9 13109cb8 7fa786d4 09216c4c \
2762feab adb732a7 71edb5c8 1b35ffc1 889811f6 ec93f481 2611d240 \
99f40c9d c2abcec9 fc54dbde 81ab45dc 75c9c3e3 aea85daf 454df9e0 \
22555a05 80fa986f 5a0ecc16 c760ba07
Ciphertext: 5b88b8ce b8f07d4d d59a9fc0 015075e7 9857f147 31446905 b40fdc61 \
8880112f 6209596c 874045b2 eca82144 c04203db 3af9d8a4 76eb95a9 \
df4894fe 80333bc9 1cbe41cb 8ef443ac 6674723e bf01bcab 8c3b7dcb \
94514fc6 0c437e6e 78f3caa9 61fe01d3 687968d0 874f7999 ac9398ba \
769e01dd 068be060 0fd37fa2 2f7fcafd
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: b22afa39 7ce72944 959bd673
IV: cdbcecb3 89f37933
Plaintext: 4b02a986 f82e7864 32b391ab e3701c69 213cccc3 61a5e608 235f4f60 \
d8aa85ce 952e23d1 e35f7560 57889c40 173ef00f 909e5ac3 5f9a5dc2 \
aa9f8538 b811c390 ee1f2ced 5a5a4af8 93754c6c 8b53c204 eb322a23 \
cddff753 ddaecba8 87537738 e29d8671 44da56e0 6ed99444 cd313774 \
9284148b 19160e53 0ff014d6 ca5abd9f
Ciphertext: 831befab 18a6cfb7 abd6a14e 24040841 f755d816 ffc25ad5 0579770f \
adeea740 f8c8aef5 78a2df24 1a958d1f 25c23b7d 63b2630c 7fbadd4e \
269f70f0 7a096b5c 3beb93a4 11fe97ba 70131481 2567fcb2 a5ddf18a \
06b46ed7 139b07b5 69fef670 9ddd68f9 341e8eb5 98a10e3e 70617139 \
85020a5a 9386c52d 285a7e70 efd16e63
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: fc0a760e 0a669927 f412f9d4
IV: efc35119 917a0d49
Plaintext: 32a6b81b ce4760e8 7e7e231f 04632181 8611c15a a3330428 33c9de6b \
9d0124e4 b935e263 bc6623f2 86efd0a8 3adf163e 761fd9b1 4da8b7e2 \
d75be1ff 4b6a9556 92c128bc 09d920e1 18162b3c 6b33fc47 2abf9536 \
c3960169 2a2f9d37 7da57551 c5956cbc 1d5dfe22 c2dd9382 a1fced5f \
e120b363 e96f7f27 9f7845c8 bbc7d1cc
Ciphertext: caf22960 e1feca77 7ccfd442 240f86d2 d7a7e6b1 fedc728c 09b3f8da \
cf281ed9 b3b50bc3 a9b5b12a 3c5f63b6 d85f0eee 3481f14d c32dbaa7 \
0b8b9a5f 4ce9cf13 31bcfe76 7c29ed15 db9f2502 aa8607cd ed4623cf \
43e70d11 ab95bc50 2a854ba6 7c8c40c5 a1c05734 f7239b3e c5415e9d \
3563f2db 438cfc19 ff95c95e 5e889545
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: e8e42ab9 9ba57bcf 9908b8d8
IV: cd3c8239 098b4bea
Plaintext: 1e0f5543 f182286b cb004da6 c6efd2b5 3696ee0a 37c25d60 e49384ed \
ffb0c6ff 93a77bbd e24b3680 97c28652 3caaad7c d951153e c8752a54 \
15c2443e 32cf399e d7cc2020 e9b55eb8 721a31f1 fc0002a3 19fb36b5 \
6d945527 90574184 85260546 87dbec81 a4f2614c 43914a84 0534bb25 \
529c7921 48091ce3 19cb1374 9dafc9d0
Ciphertext: 08e586d8 30f05dab ee37131b 35320dce b2fae52e add4eba4 59e39772 \
23be9aff fbd223ad e7ae55bd f707f1ef 4b2bdb3a c0c0b0c1 cf5e4ecc \
728314de 02675e70 0c9015cd cceab730 bb93eca8 049dd88a c0aa53c4 \
097b4cd7 83c1f8e7 d3a067e8 1ae1e50b 7579ef00 3aa679f9 76e12b5d \
e0d3abb8 732743df 5f5f49b7 3b9956fb
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 5d5e6aa3 5b340fa0 5860c3c0
IV: 1bec9d59 6917cfff
Plaintext: 1873586c ab219460 84a0b7e5 b4dc93ff 40dd6958 4bf4204a f702dcb7 \
b40e8b6e 31af4054 ebc68771 850343cd 11e43518 3864b1a4 2f914510 \
f0d4b04f 9e262071 f26a2cca b8b6b898 8b228f5a 5305ff83 4ddbd4b7 \
320e2aa3 121fc1c0 54fd453e aeb650a1 26d0ac0d ec468493 e83fece6 \
043c14e2 c9a73c33 45c5ca9e c1a94c83
Ciphertext: 0e2b32d3 177d9abd 8aa9d004 e0512aa0 7a018f20 eb7cc785 1554fc4f \
62ab417e 39fb437c 7983c3a1 793c34a9 80cc7eb7 177979f8 24f684e1 \
c9319d62 1813dd5f 1f41cf62 f885d311 3b5c7d53 1c716b88 cdc006cc \
ecd65f93 9eb84950 206bf943 c9c41ca3 5bcb729a be8210b7 05f31b32 \
29fdf417 c3316c4c 4f543ffb 62e746d4
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 0ce93bcd cba42490 395b9bce
IV: 71775410 ab930944
Plaintext: e454e403 bc308714 73383da9 cb20db6d 459bb508 d184fef4 4ca2405a \
362b24f7 86dd8441 a88322cc d68d83f7 a88e0a5b ede3fdfe c4161dd6 \
f045297e 95cae7d1 2c5adfe2 cad70223 151f0ebb 8115dc85 dab7af50 \
53c189df 70248981 90c5e23b a1c7b4a3 a3794d18 ea2a3dd9 9575779c \
3eb3cfc6 651bae48 a2e6aee4 760111ed
Ciphertext: 2a6985d3 8b1f71b0 d5811d9a 9ab9e8d1 ccb501f3 bca8c4c5 baca4ac2 \
4654942b 23ad480d eee295f5 47e46962 80ee81e5 f13c6d2d 9ff12f47 \
d7bc790d d9b8e2b2 8d8d0456 952a91b4 71c57980 c5aaee34 c59ac158 \
72348f27 a6e37e67 bcb9e87d dc307efc 2a636b54 e4625c02 07333afb \
16a29228 595552a3 1dd6b149 5d6961a9
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: b06fee47 f5a46b7a 7d99ba6e
IV: ebf68a00 4ebf7dc1
Plaintext: 0bdafc03 73421a71 8c9acdfe 0b1fefb5 bf5d6bf6 14b84792 ac19a5c0 \
e811f618 f9303851 2deeab4b 58a1dea6 26d62566 30807dff f0d65f0a \
587102b7 062b765e f88d4cc4 d89c3058 1fc12d03 f950654b 4a59e017 \
e1cb63c3 6675c8f5 38d8e0e3 04a0bb68 4bc74d95 fed8cfa1 da97ecaf \
99363695 46df48c4 20338b4f fe708a67
Ciphertext: e1b0d5b1 0471540e de4096fd 09f26ed8 b08da4a0 f7cca45e 6070f5d2 \
c6f501d4 83de255a 273d46fc eb0dc310 c86a903f 25db7ae9 7fc746f1 \
0c2a2f68 f30bb277 84c5f005 e08ee2b4 2fedbd99 16740bcd 11eb3b8c \
e255536b adda87d9 488cff9c abb87da5 d632f8b2 37820790 dff6b9c8 \
0f693c09 e6f8dcaa 42d1e954 2feb9013
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 7f88b273 be78dd9f 4e90ba0f
IV: 2232a422 457db6e1
Plaintext: 0571d828 ce3e3216 c35142a8 b46beb08 a065fe93 51e4c938 e0e7ebc0 \
a0ce51dc afa8ab7f bb00a59a 28641877 52b58bad ad083ec4 ccc09f61 \
0c5dde5d 6f74babf d653373b 3ec00272 52a3d012 5665e800 9ca19633 \
7bc050cd 8c9b81ef 321f2db7 abce7aad a642a63e 30529a39 8a8e1a83 \
e6969441 2bd89d27 bed78e0e 5b17f86a
Ciphertext: 593342ad 20c9204b 3bfa74f0 2f179a66 325182bf cfc3efcb 79438b89 \
86c63168 f82e7984 67031d27 4a53fa65 992faa34 16d5c9d4 f7b8d0fc \
769907c3 a653cde4 a350302e 27bdfdbf 80cc813a 4e7fd197 41ba2d59 \
72e04e68 238e9d72 6a31b73d a5111abc 4ab734c8 c18f8ac4 ed1a175a \
0a0e2fe6 0ff4d59e 5de2470d 5a8c3831
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 62870ce0 de3a04ad bfb2b65b
IV: b90b19b8 678e5053
Plaintext: a2a85535 2ea29f6e fb992bee ad4c85bf c62c2531 de968998 5a14836d \
5f619122 7e92c345 b6654e44 d7d0fb29 098b66e2 4cacbb46 23f0443b \
0f1ffb4b d62875cb cea2f9ed 2334d6fd 1cc93ca1 6e3bd141 f4945659 \
50b87673 95b02f2e ae3bc64b ccb92a46 a014ac9c e268258c a925fd52 \
655368d0 da4d0650 2bc3433e 102f0938
Ciphertext: fc31426f aa0ff9a7 06ad20db 0960882d 5f6f0ed8 f4be9256 2f888315 \
6c81ad5d 98974f68 f866f876 fb34b6b5 822c4d7f 46bc5bfa f423c8a3 \
b57b65dc a4a57aef 6c1aad6b d518163a 1a621bdb a79e7c57 5d76ca87 \
3d354404 8d639b9b a5a18afa 66d38d2e 8738d8d5 75efac78 6e5ee98a \
9f7807c2 6c4d57f7 05b4b5cb 9be96a6d
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 5e365c7b 0e733eb0 3a58615e
IV: f465f87e 5944a033
Plaintext: 4353b29e 6429d228 7efbe6c7 20606a3b 1e319cfc 2a9a9fdd c8d2c79a \
4be099fd 06d56a93 9e6b01e2 a0a679a2 2a2dc685 52b3da6d c6071f3c \
c87177ff bf5acfb9 0bc23b1c 5bdb8db7 2ae1c594 b12e174c 7cb2c4da \
f71bbeeb 759e52a1 3b77a663 ded3ecce 2bce4b38 59a9700b 1dd9857c \
b31ddb69 a27190c2 e066910c c2bc34cf
Ciphertext: 04e2c9bf e2c59b24 d588c114 9a267e79 34929db2 660f3404 03f25e99 \
7deb02ca d86feea5 7fc0f3f5 3721c004 83029ff4 16d745ce e0f8378c \
ceb73231 3d5bc304 ce972ffb 5c75250b eb645277 77fcb157 5e06004f \
f7979608 e1175868 bcd3cee8 d36ccef9 d84c01b4 eb52cadd f8c0029b \
5b5282bc 800eec5a d2a19298 db8a106b
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 209de4ef 26529a61 23033dcb
IV: b22ae6dc d402339d
Plaintext: 5c95c517 22e1710c 26fda5ef 01e14da4 e9261e56 db41855c afd19050 \
c31b5bd9 82e48ab3 581942d0 28cbf808 054a4f47 f7b85798 b5d22c40 \
9f19e964 5b848977 7bc580b4 42b9935f 086a088f 394be1b3 d01eaa41 \
c8869357 ef57c378 60f3dfe9 e78ad415 86f5c374 29b1c779 33d9e03c \
7750bd0c 250d1afc cbc0fcb5 8f74011e
Ciphertext: 63c5a3c9 48e32107 4a04e8a1 8ff46a6e cacd7a3b 7b1ca1d9 3e2205c2 \
2a4e09df 016e1957 4a0b4dff 8b5e31bb ec1cef77 aa3be551 f03ed1a1 \
bbfa31aa 26362aa4 6923dfdf bb771391 cf9869fb 7caf09e3 0387b5fa \
8fce70fc 37aa9952 7a991d4d 78f34fde 94476407 e9d01521 e164eb49 \
8a074732 8f024f85 41a04e47 35bd9a6a
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 3ed22886 e8150a1d 469f6e04
IV: de9cca25 3053575a
Plaintext: e87bd4dc 79884ae0 3404fb42 9a455fda 326b191f a6de4ae7 aa588002 \
521673ae 34c50523 e1d611b5 6226c495 48c8ec7a 0bc819de cf277f8b \
241c0b3c cc6d47c9 9a717d31 32b24a15 87b1fc96 53953d47 560b96b2 \
b4351510 8dbde188 746e9480 392dc7da c54c958f 5c2c8d4c da9fbcbb \
6966cc89 55de6d66 c286a00c b4eaed70
Ciphertext: 4af556d3 c58a8f86 06e26425 a396f14f 89c31875 c445b2db 233dcc40 \
1e037e97 7fa4b8ce 58c3c6f6 d2d34bdc c5c78840 76009e41 34f4ca5c \
a8d5cdfc 2aa117b9 ac207e35 6f432eb6 3c4f0d1f 70d4bd42 8e24a70b \
584895a2 3b5757da c926f3bd c85ddaaf f85f6c59 c4d1821d dc67c6e7 \
87f5cf94 300be608 cf4df1a6 db22558f
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 97dee01d 51690264 1d5520ef
IV: 8c927532 68cca698
Plaintext: 07e3d507 da0473e4 9d89e09a d4cb7b84 b90a8a05 b65c4aaa 13eec172 \
fe4aed22 46b6fe54 14a8f116 1e1091ba 1b23b7d0 45352dc5 31f22a81 \
22c6ab0f f9451211 9697b923 5b9631a4 2634373e bfafc1d9 3858664b \
16d2e84f 36aa02ba 51c9f68d f3ba884d 27449501 15c0234d 51fb2dfa \
37da1d60 90fc93ae a97df2c8 f59dfe7e
Ciphertext: 90692e92 1400503d 1d715068 bcd6f18b 587cdda5 f89785f3 2f681f4b \
97b822b8 1f096f3b 66498424 08961999 838fd1da a56947c0 e22a8f2f \
a75c9643 9f499002 ef3d5f1a 0c220ca4 f483a58c a64dd03a f6afe844 \
ba3609dc 764a737b 040df5e3 4c0d94f5 0ea34a61 03e3de8a 1c2e219d \
5aebda89 a6714428 70a33a38 8b286200
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
Comment: Speck64/96, large block
Key: 9c64b298 4f9b16c9 7fa390c1
IV: 3b413ced ab042ed2
Plaintext: 77ad5297 006cc0cf 79b3010e 03de19c0 201f592f 8835273a 76ff003f \
e88187b2 5ddea59f 7bb3a136 7df8a454 f40555ab ba68740c b98a8fd9 \
00f83ded c10cf152 6f52174a 83eace2f ff4a6261 84c46822 ff61cd0a \
82bd32aa 485230cc 9c8e4e1d 64f1d463 eb5424ad a51f1321 68cde408 \
c8f6598e 2f163c2d bff7d40a e5dc0018
Ciphertext: 92710755 4aff00b2 4743bad9 cc130ff0 5cd676f2 b0f384be 416dc875 \
13d05f5c e6b5a150 99705d7e 62a42486 8a8b442e 46b9b753 1bd62d21 \
bd4e4955 ae463a6b ed5378b4 635cbe38 ea444a6e e7547276 93fdceee \
c949b57f 053bd621 f48251b1 9d6dd934 7211a58a f7afa8e3 02e412ce \
bc803aef 1b56ab2b 5d94e224 245eee3a
Test: Encrypt
AlgorithmType: SymmetricCipher
Name: SPECK-128/ECB
#
@ -353,20 +612,20 @@ Key: c68d29664b2766a2 bdfe20230619b8ce
IV: a0de35c7b9fd10cd 051528b16a09a6d4
Plaintext: 3823348a2b6185cd c6672a829cf0db60 076edc8c0f7efb3c 733735ca75768f6e \
fa168311dc335bef 811749d9f0fda742 0106bcac21e32d75 f3e3e410db98321d \
c363579419d696f7 502a2d655ef39f63 5959c25bbe8608aa f36f65915177ddeb \
21af1d863ab1e9e2 473d2b4fd4c677c8 07646825e8690650 f5d3ac8851625814 \
a80b84b2d98da474 db006f922e20d4f4 1ede2c22d6d28ef0 eea8b37d49c53b97 \
cd1ac8e450698767 e47a5fd775c61e0f 733bccf42fc6a8f8 068b9cb640875128 \
579da221416ab150 38151cbf49452934 e7553040448d1646 7f49aa7f7c48c005 \
7bb674e8c6aca324 9ab41ca5246f2dd2 c3e366d3401372d5 e1716889d11a4bff
c363579419d696f7 502a2d655ef39f63 5959c25bbe8608aa f36f65915177ddeb \
21af1d863ab1e9e2 473d2b4fd4c677c8 07646825e8690650 f5d3ac8851625814 \
a80b84b2d98da474 db006f922e20d4f4 1ede2c22d6d28ef0 eea8b37d49c53b97 \
cd1ac8e450698767 e47a5fd775c61e0f 733bccf42fc6a8f8 068b9cb640875128 \
579da221416ab150 38151cbf49452934 e7553040448d1646 7f49aa7f7c48c005 \
7bb674e8c6aca324 9ab41ca5246f2dd2 c3e366d3401372d5 e1716889d11a4bff
Ciphertext: 620efc4fc69f13ca 59825dafcb789392 6fa35bb85756607f f45e4eee64ce16d0 \
8050baf34977712f 71d25952286a25c4 d5e33d658cc7132a 23d569775a69aa4e \
bd331a966e935e8d e133f3e299528dc1 e8b88a4e23414a83 a3407aa7e5111bb7 \
d83fc447dcb49c55 548434cfb054798a 6b1942bbf8455a55 8ad014f560c9d6d3 \
85c52722d5053b7f c3f096c4e453947a 28b7989b11126299 feaba0c036d139b8 \
f60e607354532cfc a9ffa8216418bb85 3654f0487061d68f cbc481564448e9fa \
2ba5da8e54c222ff 458a4015ebd9a230 596e29d71bd7e998 5e75132ca3347c4c \
6a5429c56866e0c1 18d175de90d33979 ffc6c5296916ad9f 0776a70f8908bd32
bd331a966e935e8d e133f3e299528dc1 e8b88a4e23414a83 a3407aa7e5111bb7 \
d83fc447dcb49c55 548434cfb054798a 6b1942bbf8455a55 8ad014f560c9d6d3 \
85c52722d5053b7f c3f096c4e453947a 28b7989b11126299 feaba0c036d139b8 \
f60e607354532cfc a9ffa8216418bb85 3654f0487061d68f cbc481564448e9fa \
2ba5da8e54c222ff 458a4015ebd9a230 596e29d71bd7e998 5e75132ca3347c4c \
6a5429c56866e0c1 18d175de90d33979 ffc6c5296916ad9f 0776a70f8908bd32
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated
@ -375,20 +634,20 @@ Key: 9039e8b1530076b4 6b3cf7287ec85e70
IV: 65a9b1991f814387 bb059eba320db1a8
Plaintext: b477749b15778e93 31bf8752abf913b6 181ceaa94903e6cc 66d962d0f7bd8a2f \
96b8ff71cef39487 657e67831ea69fdb 8ff0a5df910f3418 0992010b8d23d554 \
7f4972d9c2a1efcd 02e6b8950059faba 17fbab1b7f0ebe2a 1da06d43e7767541 \
80e9cda53b0e2fdf 269318d62c095015 10640f3aca1dd4cb 378aa5d8cd923aac \
25be5a0e55fcd161 f877c4b078caf27d d410d7eced28cf77 3d0258a25b6c2014 \
e3ff18addcdb1173 5498cf13defc90f9 85264d9da179d372 3097221bb978db9d \
8b95c76ac888aa4e 8b7bc907ca2f6b4e 5a23fb36d1954a39 982cfd8c28aadc18 \
2431167ebd648d05 cd44f76bd965c9a1 05b96640c59bb8b0 52672ffb3b639a27
7f4972d9c2a1efcd 02e6b8950059faba 17fbab1b7f0ebe2a 1da06d43e7767541 \
80e9cda53b0e2fdf 269318d62c095015 10640f3aca1dd4cb 378aa5d8cd923aac \
25be5a0e55fcd161 f877c4b078caf27d d410d7eced28cf77 3d0258a25b6c2014 \
e3ff18addcdb1173 5498cf13defc90f9 85264d9da179d372 3097221bb978db9d \
8b95c76ac888aa4e 8b7bc907ca2f6b4e 5a23fb36d1954a39 982cfd8c28aadc18 \
2431167ebd648d05 cd44f76bd965c9a1 05b96640c59bb8b0 52672ffb3b639a27
Ciphertext: 4feebefeb9310741 a1384dc25ab69501 e2e8f77cd971c91d a9f0b023eef42aa1 \
7059924961bd32f0 0f4398a57193355a dc3436ec130ba116 bf186f86e476887b \
2332f0fe17a8b908 94819b252d7c8065 17efae225743f88c 5239a4309b0ebd2e \
18df51ad08b0cf70 6f2aca28f222057c 5d76a888db649f6e 74f393e04ebc64ff \
9210da6676269cc4 d06d61c82f4d86aa 234aabc6856571ec c02540caef21188b \
1127b2ccb89e5b85 e7fbf93ac3f83c42 e0a558c01de04fd5 398f09b2da9a8677 \
8fdde8d7595febef 7d22f233db29cbda c17853f90ea2e985 59f399bab7ef74d1 \
cb4867773db210f0 dd28e18d24623cb2 ef6cc49f650e4223 252bac29113041dd
2332f0fe17a8b908 94819b252d7c8065 17efae225743f88c 5239a4309b0ebd2e \
18df51ad08b0cf70 6f2aca28f222057c 5d76a888db649f6e 74f393e04ebc64ff \
9210da6676269cc4 d06d61c82f4d86aa 234aabc6856571ec c02540caef21188b \
1127b2ccb89e5b85 e7fbf93ac3f83c42 e0a558c01de04fd5 398f09b2da9a8677 \
8fdde8d7595febef 7d22f233db29cbda c17853f90ea2e985 59f399bab7ef74d1 \
cb4867773db210f0 dd28e18d24623cb2 ef6cc49f650e4223 252bac29113041dd
Test: Encrypt
#
Source: Crypto++ 5.6.5 generated

View File

@ -151,25 +151,25 @@ void RegisterFactories2()
RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish256> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<ECB_Mode<Threefish512> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish512> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<ECB_Mode<Threefish1024> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish1024> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<ECB_Mode<Threefish1024> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<Threefish1024> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish256> >(); // Benchmarks
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish512> >(); // Benchmarks
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish1024> >(); // Benchmarks
RegisterSymmetricCipherDefaultFactories<CTR_Mode<Threefish1024> >(); // Benchmarks
RegisterSymmetricCipherDefaultFactories<ECB_Mode<SIMON64> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<SIMON64> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<ECB_Mode<SIMON128> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<SIMON128> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<ECB_Mode<SIMON128> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<SIMON128> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CTR_Mode<SIMON64> >(); // Benchmarks
RegisterSymmetricCipherDefaultFactories<CTR_Mode<SIMON128> >(); // Benchmarks
RegisterSymmetricCipherDefaultFactories<ECB_Mode<SPECK64> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<SPECK64> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<ECB_Mode<SPECK128> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<SPECK128> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<ECB_Mode<SPECK128> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<SPECK128> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CTR_Mode<SPECK64> >(); // Benchmarks
RegisterSymmetricCipherDefaultFactories<CTR_Mode<SPECK128> >(); // Benchmarks
RegisterSymmetricCipherDefaultFactories<CTR_Mode<SPECK128> >(); // Benchmarks
RegisterSymmetricCipherDefaultFactories<ECB_Mode<SM4> >(); // Test Vectors
RegisterSymmetricCipherDefaultFactories<CBC_Mode<SM4> >(); // Test Vectors

View File

@ -1007,7 +1007,9 @@ size_t SIMON128_AdvancedProcessBlocks_NEON(F2 func2, F6 func6,
#if defined(CRYPTOPP_SSSE3_AVAILABLE)
CRYPTOPP_ALIGN_DATA(16)
const word32 s_one64[] = {0, 1<<24, 0, 1<<24};
const word32 s_one64_1b[] = {0, 0, 0, 1<<24}; // Only second 8-byte block is incremented after loading
CRYPTOPP_ALIGN_DATA(16)
const word32 s_one64_2b[] = {0, 2<<24, 0, 2<<24}; // Routine step. Both 8-byte block are incremented
CRYPTOPP_ALIGN_DATA(16)
const word32 s_one128[] = {0, 0, 0, 1<<24};
@ -1760,22 +1762,40 @@ inline size_t SIMON64_AdvancedProcessBlocks_SSE41(F2 func2, F6 func6,
if (flags & BlockTransformation::BT_AllowParallel)
{
// Load these magic value once. Analysis claims be1 and be2
// may be uninitialized, but they are when the block is a ctr.
__m128i be1, be2;
if (flags & BlockTransformation::BT_InBlockIsCounter)
{
be1 = *CONST_M128_CAST(s_one64_1b);
be2 = *CONST_M128_CAST(s_one64_2b);
}
while (length >= 6*xmmBlockSize)
{
__m128i block0, block1, block2, block3, block4, block5;
block0 = _mm_loadu_si128(CONST_M128_CAST(inBlocks));
if (flags & BlockTransformation::BT_InBlockIsCounter)
{
const __m128i be1 = *CONST_M128_CAST(s_one64);
block1 = _mm_add_epi32(block0, be1);
block2 = _mm_add_epi32(block1, be1);
block3 = _mm_add_epi32(block2, be1);
block4 = _mm_add_epi32(block3, be1);
block5 = _mm_add_epi32(block4, be1);
_mm_storeu_si128(M128_CAST(inBlocks), _mm_add_epi32(block5, be1));
// For 64-bit block ciphers we need to load the initial single CTR block.
// After the dup load we have two counters in the XMM word. Then we need
// to increment the low ctr by 0 and the high ctr by 1.
block0 = _mm_add_epi32(be1, _mm_castpd_si128(
_mm_loaddup_pd(reinterpret_cast<const double*>(inBlocks))));
// After initial increment both counters increment by 1.
block1 = _mm_add_epi32(be2, block0);
block2 = _mm_add_epi32(be2, block1);
block3 = _mm_add_epi32(be2, block2);
block4 = _mm_add_epi32(be2, block3);
block5 = _mm_add_epi32(be2, block4);
// Store the next counter.
_mm_store_sd(reinterpret_cast<double*>(const_cast<byte*>(inBlocks)),
_mm_castsi128_pd(_mm_add_epi32(be2, block5)));
}
else
{
block0 = _mm_loadu_si128(CONST_M128_CAST(inBlocks));
inBlocks += inIncrement;
block1 = _mm_loadu_si128(CONST_M128_CAST(inBlocks));
inBlocks += inIncrement;
@ -1843,15 +1863,25 @@ inline size_t SIMON64_AdvancedProcessBlocks_SSE41(F2 func2, F6 func6,
while (length >= 2*xmmBlockSize)
{
__m128i block0 = _mm_loadu_si128(CONST_M128_CAST(inBlocks)), block1;
__m128i block0, block1;
if (flags & BlockTransformation::BT_InBlockIsCounter)
{
const __m128i be1 = *CONST_M128_CAST(s_one64);
block1 = _mm_add_epi32(block0, be1);
_mm_storeu_si128(M128_CAST(inBlocks), _mm_add_epi32(block1, be1));
// For 64-bit block ciphers we need to load the initial single CTR block.
// After the dup load we have two counters in the XMM word. Then we need
// to increment the low ctr by 0 and the high ctr by 1.
block0 = _mm_add_epi32(be1, _mm_castpd_si128(
_mm_loaddup_pd(reinterpret_cast<const double*>(inBlocks))));
// After initial increment both counters increment by 1.
block1 = _mm_add_epi32(be2, block0);
// Store the next counter.
_mm_store_sd(reinterpret_cast<double*>(const_cast<byte*>(inBlocks)),
_mm_castsi128_pd(_mm_add_epi64(be2, block1)));
}
else
{
block0 = _mm_loadu_si128(CONST_M128_CAST(inBlocks));
inBlocks += inIncrement;
block1 = _mm_loadu_si128(CONST_M128_CAST(inBlocks));
inBlocks += inIncrement;
@ -1929,7 +1959,7 @@ inline size_t SIMON64_AdvancedProcessBlocks_SSE41(F2 func2, F6 func6,
_mm_load_sd(reinterpret_cast<const double*>(xorBlocks))));
}
_mm_store_sd(reinterpret_cast<double*>(outBlocks), _mm_castsi128_pd(block));
_mm_store_sd(reinterpret_cast<double*>(outBlocks), _mm_castsi128_pd(block));
inBlocks += inIncrement;
outBlocks += outIncrement;

View File

@ -50,9 +50,9 @@ using CryptoPP::BlockTransformation;
#if defined(CRYPTOPP_ARM_NEON_AVAILABLE)
#if defined(CRYPTOPP_LITTLE_ENDIAN)
const word32 s_one64[] = {0, 1<<24, 0, 1<<24};
const word32 s_one64[] = {0, 1<<24, 0, 2<<24};
#else
const word32 s_one64[] = {0, 1, 0, 1};
const word32 s_one64[] = {0, 2, 0, 1};
#endif
template <unsigned int R>
@ -959,7 +959,9 @@ size_t SPECK128_AdvancedProcessBlocks_NEON(F2 func2, F6 func6,
#if defined(CRYPTOPP_SSSE3_AVAILABLE)
CRYPTOPP_ALIGN_DATA(16)
const word32 s_one64[] = {0, 1<<24, 0, 1<<24};
const word32 s_one64_1b[] = {0, 0, 0, 1<<24}; // Only second 8-byte block is incremented after loading
CRYPTOPP_ALIGN_DATA(16)
const word32 s_one64_2b[] = {0, 2<<24, 0, 2<<24}; // Routine step. Both 8-byte block are incremented
CRYPTOPP_ALIGN_DATA(16)
const word32 s_one128[] = {0, 0, 0, 1<<24};
@ -1656,22 +1658,40 @@ inline size_t SPECK64_AdvancedProcessBlocks_SSE41(F2 func2, F6 func6,
if (flags & BlockTransformation::BT_AllowParallel)
{
// Load these magic value once. Analysis claims be1 and be2
// may be uninitialized, but they are when the block is a ctr.
__m128i be1, be2;
if (flags & BlockTransformation::BT_InBlockIsCounter)
{
be1 = *CONST_M128_CAST(s_one64_1b);
be2 = *CONST_M128_CAST(s_one64_2b);
}
while (length >= 6*xmmBlockSize)
{
__m128i block0, block1, block2, block3, block4, block5;
block0 = _mm_loadu_si128(CONST_M128_CAST(inBlocks));
if (flags & BlockTransformation::BT_InBlockIsCounter)
{
const __m128i be1 = *CONST_M128_CAST(s_one64);
block1 = _mm_add_epi32(block0, be1);
block2 = _mm_add_epi32(block1, be1);
block3 = _mm_add_epi32(block2, be1);
block4 = _mm_add_epi32(block3, be1);
block5 = _mm_add_epi32(block4, be1);
_mm_storeu_si128(M128_CAST(inBlocks), _mm_add_epi32(block5, be1));
// For 64-bit block ciphers we need to load the initial single CTR block.
// After the dup load we have two counters in the XMM word. Then we need
// to increment the low ctr by 0 and the high ctr by 1.
block0 = _mm_add_epi32(be1, _mm_castpd_si128(
_mm_loaddup_pd(reinterpret_cast<const double*>(inBlocks))));
// After initial increment both counters increment by 1.
block1 = _mm_add_epi32(be2, block0);
block2 = _mm_add_epi32(be2, block1);
block3 = _mm_add_epi32(be2, block2);
block4 = _mm_add_epi32(be2, block3);
block5 = _mm_add_epi32(be2, block4);
// Store the next counter.
_mm_store_sd(reinterpret_cast<double*>(const_cast<byte*>(inBlocks)),
_mm_castsi128_pd(_mm_add_epi32(be2, block5)));
}
else
{
block0 = _mm_loadu_si128(CONST_M128_CAST(inBlocks));
inBlocks += inIncrement;
block1 = _mm_loadu_si128(CONST_M128_CAST(inBlocks));
inBlocks += inIncrement;
@ -1739,15 +1759,25 @@ inline size_t SPECK64_AdvancedProcessBlocks_SSE41(F2 func2, F6 func6,
while (length >= 2*xmmBlockSize)
{
__m128i block0 = _mm_loadu_si128(CONST_M128_CAST(inBlocks)), block1;
__m128i block0, block1;
if (flags & BlockTransformation::BT_InBlockIsCounter)
{
const __m128i be1 = *CONST_M128_CAST(s_one64);
block1 = _mm_add_epi32(block0, be1);
_mm_storeu_si128(M128_CAST(inBlocks), _mm_add_epi32(block1, be1));
// For 64-bit block ciphers we need to load the initial single CTR block.
// After the dup load we have two counters in the XMM word. Then we need
// to increment the low ctr by 0 and the high ctr by 1.
block0 = _mm_add_epi32(be1, _mm_castpd_si128(
_mm_loaddup_pd(reinterpret_cast<const double*>(inBlocks))));
// After initial increment both counters increment by 1.
block1 = _mm_add_epi32(be2, block0);
// Store the next counter.
_mm_store_sd(reinterpret_cast<double*>(const_cast<byte*>(inBlocks)),
_mm_castsi128_pd(_mm_add_epi64(be2, block1)));
}
else
{
block0 = _mm_loadu_si128(CONST_M128_CAST(inBlocks));
inBlocks += inIncrement;
block1 = _mm_loadu_si128(CONST_M128_CAST(inBlocks));
inBlocks += inIncrement;