RFC 6229
Test Vectors for the Stream Cipher RC4
Test Vectors for the Stream Cipher RC4 π¦
bestie, this RFC is from May 2011 and it's an Informational doc from the IETF (Internet Engineering Task Force) π Written by J. Strombergson (SecWorks Sweden AB) and S. Josefsson (Simon Josefsson Datakonsult AB), it's published as ISSN 2070-1721. The title block doesn't list anything it obsoletes or updates, so it's standing on its own β¨
Abstract β¨
ok so the whole thing in one line: this doc is full of test vectors for the stream cipher RC4 π Test vectors are basically answer keys, so you can check your implementation is giving the right output π«Ά
Status of This Memo π
this one is giving "not a standard, just here for info" energy π It's not an Internet Standards Track spec. It's published for informational purposes.
It IS a product of the IETF though, so it represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). Not every IESG-approved doc is a candidate for any level of Internet Standard, though. See Section 2 of RFC 5741 for that.
For the current status, any errata, and how to send feedback, check http://www.rfc-editor.org/info/rfc6229 πΈ
Copyright Notice π
Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved.
This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as in effect on the date of publication. Read those carefully, because they spell out your rights and restrictions for this document. If you pull Code Components out of this document, they must include the Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions. They're also provided without warranty, as described in the Simplified BSD License π«Ά
Table of Contents π§
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Test Vectors for RC4 . . . . . . . . . . . . . . . . . . . . . 4
3. Security Considerations . . . . . . . . . . . . . . . . . . . 11
4. Copying Conditions . . . . . . . . . . . . . . . . . . . . . . 11
5. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.1. Normative References . . . . . . . . . . . . . . . . . . . 11
5.2. Informative References . . . . . . . . . . . . . . . . . . 11
1. Introduction β¨
okay so the RC4 [RC4] algorithm is a super widely used stream cipher π Test vectors for algorithms are really useful for implementers, obviously. RC4 can run with different key lengths. Advances in crypto-analysis [FMcG] [MANTIN01] [MIRONOV] [MANTIN05] suggest that the initial parts of the stream output need to be discarded π This doc has several test vectors for different key lengths and different offsets into the stream.
the motivation for writing this came from implementing [RFC4345] π
the test vectors were collected by generating RC4 keystream output from three separate implementations and then comparing the streams. The implementations are Libgcrypt 1.4.4 [LIBGCRYPT], Nettle 2.0 [NETTLE], and a custom implementation π
there are test vectors for two different keys:
- Key 1: The key byte index, starting at one. That is:
0x01, 0x02, 0x03, 0x04,... - Key 2: Generated by hashing the string "Internet Engineering Task Force" with the SHA-256 [SHS] [RFC4634] hash function, using this command:
$ echo -n "Internet Engineering Task Force" | sha256sum
1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a
the generated string was also verified with the SHA-256 hash function implementation in OpenSSL (versions 0.9.8l and 1.0.0a) [OPENSSL] π₯
then the digest gets truncated to the appropriate length, keeping the Least Significant Bit (LSB) part of the digest as the key π
the key lengths in this doc are 40, 56, 64, 80, 128, 192, and 256 bits. The stream offsets are 0, 256, 512, 768, 1024, 1536, 2048, 3072, and 4096 bytes. Offset 1536 matches the recommendations in [RFC4345], and offsets 768 and 3072 match the recommendations in [SANS] π
2. Test Vectors for RC4 π¦
this is the good part, bestie π Each key length gets its own block below. The first column is the byte offset in DEC and HEX, and the rest is the keystream output as bytes.
Key length: 40 bits.
key: 0x0102030405
DEC 0 HEX 0: b2 39 63 05 f0 3d c0 27 cc c3 52 4a 0a 11 18 a8
DEC 16 HEX 10: 69 82 94 4f 18 fc 82 d5 89 c4 03 a4 7a 0d 09 19
DEC 240 HEX f0: 28 cb 11 32 c9 6c e2 86 42 1d ca ad b8 b6 9e ae
DEC 256 HEX 100: 1c fc f6 2b 03 ed db 64 1d 77 df cf 7f 8d 8c 93
DEC 496 HEX 1f0: 42 b7 d0 cd d9 18 a8 a3 3d d5 17 81 c8 1f 40 41
DEC 512 HEX 200: 64 59 84 44 32 a7 da 92 3c fb 3e b4 98 06 61 f6
DEC 752 HEX 2f0: ec 10 32 7b de 2b ee fd 18 f9 27 76 80 45 7e 22
DEC 768 HEX 300: eb 62 63 8d 4f 0b a1 fe 9f ca 20 e0 5b f8 ff 2b
DEC 1008 HEX 3f0: 45 12 90 48 e6 a0 ed 0b 56 b4 90 33 8f 07 8d a5
DEC 1024 HEX 400: 30 ab bc c7 c2 0b 01 60 9f 23 ee 2d 5f 6b b7 df
DEC 1520 HEX 5f0: 32 94 f7 44 d8 f9 79 05 07 e7 0f 62 e5 bb ce ea
DEC 1536 HEX 600: d8 72 9d b4 18 82 25 9b ee 4f 82 53 25 f5 a1 30
DEC 2032 HEX 7f0: 1e b1 4a 0c 13 b3 bf 47 fa 2a 0b a9 3a d4 5b 8b
DEC 2048 HEX 800: cc 58 2f 8b a9 f2 65 e2 b1 be 91 12 e9 75 d2 d7
DEC 3056 HEX bf0: f2 e3 0f 9b d1 02 ec bf 75 aa ad e9 bc 35 c4 3c
DEC 3072 HEX c00: ec 0e 11 c4 79 dc 32 9d c8 da 79 68 fe 96 56 81
DEC 4080 HEX ff0: 06 83 26 a2 11 84 16 d2 1f 9d 04 b2 cd 1c a0 50
DEC 4096 HEX 1000: ff 25 b5 89 95 99 67 07 e5 1f bd f0 8b 34 d8 75
Key length: 56 bits.
key: 0x01020304050607
DEC 0 HEX 0: 29 3f 02 d4 7f 37 c9 b6 33 f2 af 52 85 fe b4 6b
DEC 16 HEX 10: e6 20 f1 39 0d 19 bd 84 e2 e0 fd 75 20 31 af c1
DEC 240 HEX f0: 91 4f 02 53 1c 92 18 81 0d f6 0f 67 e3 38 15 4c
DEC 256 HEX 100: d0 fd b5 83 07 3c e8 5a b8 39 17 74 0e c0 11 d5
DEC 496 HEX 1f0: 75 f8 14 11 e8 71 cf fa 70 b9 0c 74 c5 92 e4 54
DEC 512 HEX 200: 0b b8 72 02 93 8d ad 60 9e 87 a5 a1 b0 79 e5 e4
DEC 752 HEX 2f0: c2 91 12 46 b6 12 e7 e7 b9 03 df ed a1 da d8 66
DEC 768 HEX 300: 32 82 8f 91 50 2b 62 91 36 8d e8 08 1d e3 6f c2
DEC 1008 HEX 3f0: f3 b9 a7 e3 b2 97 bf 9a d8 04 51 2f 90 63 ef f1
DEC 1024 HEX 400: 8e cb 67 a9 ba 1f 55 a5 a0 67 e2 b0 26 a3 67 6f
DEC 1520 HEX 5f0: d2 aa 90 2b d4 2d 0d 7c fd 34 0c d4 58 10 52 9f
DEC 1536 HEX 600: 78 b2 72 c9 6e 42 ea b4 c6 0b d9 14 e3 9d 06 e3
DEC 2032 HEX 7f0: f4 33 2f d3 1a 07 93 96 ee 3c ee 3f 2a 4f f0 49
DEC 2048 HEX 800: 05 45 97 81 d4 1f da 7f 30 c1 be 7e 12 46 c6 23
DEC 3056 HEX bf0: ad fd 38 68 b8 e5 14 85 d5 e6 10 01 7e 3d d6 09
DEC 3072 HEX c00: ad 26 58 1c 0c 5b e4 5f 4c ea 01 db 2f 38 05 d5
DEC 4080 HEX ff0: f3 17 2c ef fc 3b 3d 99 7c 85 cc d5 af 1a 95 0c
DEC 4096 HEX 1000: e7 4b 0b 97 31 22 7f d3 7c 0e c0 8a 47 dd d8 b8
Key length: 64 bits.
key: 0x0102030405060708
DEC 0 HEX 0: 97 ab 8a 1b f0 af b9 61 32 f2 f6 72 58 da 15 a8
DEC 16 HEX 10: 82 63 ef db 45 c4 a1 86 84 ef 87 e6 b1 9e 5b 09
DEC 240 HEX f0: 96 36 eb c9 84 19 26 f4 f7 d1 f3 62 bd df 6e 18
DEC 256 HEX 100: d0 a9 90 ff 2c 05 fe f5 b9 03 73 c9 ff 4b 87 0a
DEC 496 HEX 1f0: 73 23 9f 1d b7 f4 1d 80 b6 43 c0 c5 25 18 ec 63
DEC 512 HEX 200: 16 3b 31 99 23 a6 bd b4 52 7c 62 61 26 70 3c 0f
DEC 752 HEX 2f0: 49 d6 c8 af 0f 97 14 4a 87 df 21 d9 14 72 f9 66
DEC 768 HEX 300: 44 17 3a 10 3b 66 16 c5 d5 ad 1c ee 40 c8 63 d0
DEC 1008 HEX 3f0: 27 3c 9c 4b 27 f3 22 e4 e7 16 ef 53 a4 7d e7 a4
DEC 1024 HEX 400: c6 d0 e7 b2 26 25 9f a9 02 34 90 b2 61 67 ad 1d
DEC 1520 HEX 5f0: 1f e8 98 67 13 f0 7c 3d 9a e1 c1 63 ff 8c f9 d3
DEC 1536 HEX 600: 83 69 e1 a9 65 61 0b e8 87 fb d0 c7 91 62 aa fb
DEC 2032 HEX 7f0: 0a 01 27 ab b4 44 84 b9 fb ef 5a bc ae 1b 57 9f
DEC 2048 HEX 800: c2 cd ad c6 40 2e 8e e8 66 e1 f3 7b db 47 e4 2c
DEC 3056 HEX bf0: 26 b5 1e a3 7d f8 e1 d6 f7 6f c3 b6 6a 74 29 b3
DEC 3072 HEX c00: bc 76 83 20 5d 4f 44 3d c1 f2 9d da 33 15 c8 7b
DEC 4080 HEX ff0: d5 fa 5a 34 69 d2 9a aa f8 3d 23 58 9d b8 c8 5b
DEC 4096 HEX 1000: 3f b4 6e 2c 8f 0f 06 8e dc e8 cd cd 7d fc 58 62
okay bestie, we're picking up the test vectors mid-flow and they are a whole vibe π every block is a list of bytes at the offsets shown, in hex and decimal, and the key lines underneath say which key made them π
DEC 0 HEX 0: 05 95 e5 7f e5 f0 bb 3c 70 6e da c8 a4 b2 db 11
DEC 16 HEX 10: df de 31 34 4a 1a f7 69 c7 4f 07 0a ee 9e 23 26
DEC 240 HEX f0: b0 6b 9b 1e 19 5d 13 d8 f4 a7 99 5c 45 53 ac 05
DEC 256 HEX 100: 6b d2 37 8e c3 41 c9 a4 2f 37 ba 79 f8 8a 32 ff
DEC 496 HEX 1f0: e7 0b ce 1d f7 64 5a db 5d 2c 41 30 21 5c 35 22
DEC 512 HEX 200: 9a 57 30 c7 fc b4 c9 af 51 ff da 89 c7 f1 ad 22
DEC 752 HEX 2f0: 04 85 05 5f d4 f6 f0 d9 63 ef 5a b9 a5 47 69 82
DEC 768 HEX 300: 59 1f c6 6b cd a1 0e 45 2b 03 d4 55 1f 6b 62 ac
DEC 1008 HEX 3f0: 27 53 cc 83 98 8a fa 3e 16 88 a1 d3 b4 2c 9a 02
DEC 1024 HEX 400: 93 61 0d 52 3d 1d 3f 00 62 b3 c2 a3 bb c7 c7 f0
DEC 1520 HEX 5f0: 96 c2 48 61 0a ad ed fe af 89 78 c0 3d e8 20 5a
DEC 1536 HEX 600: 0e 31 7b 3d 1c 73 b9 e9 a4 68 8f 29 6d 13 3a 19
DEC 2032 HEX 7f0: bd f0 e6 c3 cc a5 b5 b9 d5 33 b6 9c 56 ad a1 20
DEC 2048 HEX 800: 88 a2 18 b6 e2 ec e1 e6 24 6d 44 c7 59 d1 9b 10
DEC 3056 HEX bf0: 68 66 39 7e 95 c1 40 53 4f 94 26 34 21 00 6e 40
DEC 3072 HEX c00: 32 cb 0a 1e 95 42 c6 b3 b8 b3 98 ab c3 b0 f1 d5
DEC 4080 HEX ff0: 29 a0 b8 ae d5 4a 13 23 24 c6 2e 42 3f 54 b4 c8
DEC 4096 HEX 1000: 3c b0 f3 b5 02 0a 98 b8 2a f9 fe 15 44 84 a1 68
Key length: 256 bits.
key: 0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20
next up is the 40-bit key, and this one is giving short key, big energy π§β¨
DEC 0 HEX 0: ea a6 bd 25 88 0b f9 3d 3f 5d 1e 4c a2 61 1d 91
DEC 16 HEX 10: cf a4 5c 9f 7e 71 4b 54 bd fa 80 02 7c b1 43 80
DEC 240 HEX f0: 11 4a e3 44 de d7 1b 35 f2 e6 0f eb ad 72 7f d8
DEC 256 HEX 100: 02 e1 e7 05 6b 0f 62 39 00 49 64 22 94 3e 97 b6
DEC 496 HEX 1f0: 91 cb 93 c7 87 96 4e 10 d9 52 7d 99 9c 6f 93 6b
DEC 512 HEX 200: 49 b1 8b 42 f8 e8 36 7c be b5 ef 10 4b a1 c7 cd
DEC 752 HEX 2f0: 87 08 4b 3b a7 00 ba de 95 56 10 67 27 45 b3 74
DEC 768 HEX 300: e7 a7 b9 e9 ec 54 0d 5f f4 3b db 12 79 2d 1b 35
DEC 1008 HEX 3f0: c7 99 b5 96 73 8f 6b 01 8c 76 c7 4b 17 59 bd 90
DEC 1024 HEX 400: 7f ec 5b fd 9f 9b 89 ce 65 48 30 90 92 d7 e9 58
DEC 1520 HEX 5f0: 40 f2 50 b2 6d 1f 09 6a 4a fd 4c 34 0a 58 88 15
DEC 1536 HEX 600: 3e 34 13 5c 79 db 01 02 00 76 76 51 cf 26 30 73
DEC 2032 HEX 7f0: f6 56 ab cc f8 8d d8 27 02 7b 2c e9 17 d4 64 ec
DEC 2048 HEX 800: 18 b6 25 03 bf bc 07 7f ba bb 98 f2 0d 98 ab 34
DEC 3056 HEX bf0: 8a ed 95 ee 5b 0d cb fb ef 4e b2 1d 3a 3f 52 f9
DEC 3072 HEX c00: 62 5a 1a b0 0e e3 9a 53 27 34 6b dd b0 1a 9c 18
DEC 4080 HEX ff0: a1 3a 7c 79 c7 e1 19 b5 ab 02 96 ab 28 c3 00 b9
DEC 4096 HEX 1000: f3 e4 c0 a2 e0 2d 1d 01 f7 f0 a7 46 18 af 2b 48
Key length: 40 bits.
key: 0x833222772a
and the 56-bit one next, which is so iconic to me π
DEC 0 HEX 0: 80 ad 97 bd c9 73 df 8a 2e 87 9e 92 a4 97 ef da
DEC 16 HEX 10: 20 f0 60 c2 f2 e5 12 65 01 d3 d4 fe a1 0d 5f c0
DEC 240 HEX f0: fa a1 48 e9 90 46 18 1f ec 6b 20 85 f3 b2 0e d9
DEC 256 HEX 100: f0 da f5 ba b3 d5 96 83 98 57 84 6f 73 fb fe 5a
DEC 496 HEX 1f0: 1c 7e 2f c4 63 92 32 fe 29 75 84 b2 96 99 6b c8
DEC 512 HEX 200: 3d b9 b2 49 40 6c c8 ed ff ac 55 cc d3 22 ba 12
DEC 752 HEX 2f0: e4 f9 f7 e0 06 61 54 bb d1 25 b7 45 56 9b c8 97
DEC 768 HEX 300: 75 d5 ef 26 2b 44 c4 1a 9c f6 3a e1 45 68 e1 b9
DEC 1008 HEX 3f0: 6d a4 53 db f8 1e 82 33 4a 3d 88 66 cb 50 a1 e3
DEC 1024 HEX 400: 78 28 d0 74 11 9c ab 5c 22 b2 94 d7 a9 bf a0 bb
DEC 1520 HEX 5f0: ad b8 9c ea 9a 15 fb e6 17 29 5b d0 4b 8c a0 5c
DEC 1536 HEX 600: 62 51 d8 7f d4 aa ae 9a 7e 4a d5 c2 17 d3 f3 00
DEC 2032 HEX 7f0: e7 11 9b d6 dd 9b 22 af e8 f8 95 85 43 28 81 e2
DEC 2048 HEX 800: 78 5b 60 fd 7e c4 e9 fc b6 54 5f 35 0d 66 0f ab
DEC 3056 HEX bf0: af ec c0 37 fd b7 b0 83 8e b3 d7 0b cd 26 83 82
DEC 3072 HEX c00: db c1 a7 b4 9d 57 35 8c c9 fa 6d 61 d7 3b 7c f0
DEC 4080 HEX ff0: 63 49 d1 26 a3 7a fc ba 89 79 4f 98 04 91 4f dc
DEC 4096 HEX 1000: bf 42 c3 01 8c 2f 7c 66 bf de 52 49 75 76 81 15
Key length: 56 bits.
key: 0x1910833222772a
64 bits is up next, and the vibes are still immaculate πΈ
DEC 0 HEX 0: bc 92 22 db d3 27 4d 8f c6 6d 14 cc bd a6 69 0b
DEC 16 HEX 10: 7a e6 27 41 0c 9a 2b e6 93 df 5b b7 48 5a 63 e3
DEC 240 HEX f0: 3f 09 31 aa 03 de fb 30 0f 06 01 03 82 6f 2a 64
DEC 256 HEX 100: be aa 9e c8 d5 9b b6 81 29 f3 02 7c 96 36 11 81
DEC 496 HEX 1f0: 74 e0 4d b4 6d 28 64 8d 7d ee 8a 00 64 b0 6c fe
DEC 512 HEX 200: 9b 5e 81 c6 2f e0 23 c5 5b e4 2f 87 bb f9 32 b8
DEC 752 HEX 2f0: ce 17 8f c1 82 6e fe cb c1 82 f5 79 99 a4 61 40
DEC 768 HEX 300: 8b df 55 cd 55 06 1c 06 db a6 be 11 de 4a 57 8a
DEC 1008 HEX 3f0: 62 6f 5f 4d ce 65 25 01 f3 08 7d 39 c9 2c c3 49
DEC 1024 HEX 400: 42 da ac 6a 8f 9a b9 a7 fd 13 7c 60 37 82 56 82
DEC 1520 HEX 5f0: cc 03 fd b7 91 92 a2 07 31 2f 53 f5 d4 dc 33 d9
DEC 1536 HEX 600: f7 0f 14 12 2a 1c 98 a3 15 5d 28 b8 a0 a8 a4 1d
DEC 2032 HEX 7f0: 2a 3a 30 7a b2 70 8a 9c 00 fe 0b 42 f9 c2 d6 a1
DEC 2048 HEX 800: 86 26 17 62 7d 22 61 ea b0 b1 24 65 97 ca 0a e9
DEC 3056 HEX bf0: 55 f8 77 ce 4f 2e 1d db bf 8e 13 e2 cd e0 fd c8
DEC 3072 HEX c00: 1b 15 56 cb 93 5f 17 33 37 70 5f bb 5d 50 1f c1
DEC 4080 HEX ff0: ec d0 e9 66 02 be 7f 8d 50 92 81 6c cc f2 c2 e9
DEC 4096 HEX 1000: 02 78 81 fa b4 99 3a 1c 26 20 24 a9 4f ff 3f 61
Key length: 64 bits.
key: 0x641910833222772a
80 bits next, and ngl the key is getting longer and the energy is getting bigger π¦
DEC 0 HEX 0: bb f6 09 de 94 13 17 2d 07 66 0c b6 80 71 69 26
DEC 16 HEX 10: 46 10 1a 6d ab 43 11 5d 6c 52 2b 4f e9 36 04 a9
DEC 240 HEX f0: cb e1 ff f2 1c 96 f3 ee f6 1e 8f e0 54 2c bd f0
DEC 256 HEX 100: 34 79 38 bf fa 40 09 c5 12 cf b4 03 4b 0d d1 a7
DEC 496 HEX 1f0: 78 67 a7 86 d0 0a 71 47 90 4d 76 dd f1 e5 20 e3
DEC 512 HEX 200: 8d 3e 9e 1c ae fc cc b3 fb f8 d1 8f 64 12 0b 32
DEC 752 HEX 2f0: 94 23 37 f8 fd 76 f0 fa e8 c5 2d 79 54 81 06 72
DEC 768 HEX 300: b8 54 8c 10 f5 16 67 f6 e6 0e 18 2f a1 9b 30 f7
DEC 1008 HEX 3f0: 02 11 c7 c6 19 0c 9e fd 12 37 c3 4c 8f 2e 06 c4
DEC 1024 HEX 400: bd a6 4f 65 27 6d 2a ac b8 f9 02 12 20 3a 80 8e
DEC 1520 HEX 5f0: bd 38 20 f7 32 ff b5 3e c1 93 e7 9d 33 e2 7c 73
DEC 1536 HEX 600: d0 16 86 16 86 19 07 d4 82 e3 6c da c8 cf 57 49
DEC 2032 HEX 7f0: 97 b0 f0 f2 24 b2 d2 31 71 14 80 8f b0 3a f7 a0
DEC 2048 HEX 800: e5 96 16 e4 69 78 79 39 a0 63 ce ea 9a f9 56 d1
DEC 3056 HEX bf0: c4 7e 0d c1 66 09 19 c1 11 01 20 8f 9e 69 aa 1f
DEC 3072 HEX c00: 5a e4 f1 28 96 b8 37 9a 2a ad 89 b5 b5 53 d6 b0
DEC 4080 HEX ff0: 6b 6b 09 8d 0c 29 3b c2 99 3d 80 bf 05 18 b6 d9
DEC 4096 HEX 1000: 81 70 cc 3c cd 92 a6 98 62 1b 93 9d d3 8f e7 b9
Key length: 80 bits.
key: 0x8b37641910833222772a
now the 128-bit key, and bestie this one is literally a whole main character moment π
DEC 0 HEX 0: ab 65 c2 6e dd b2 87 60 0d b2 fd a1 0d 1e 60 5c
DEC 16 HEX 10: bb 75 90 10 c2 96 58 f2 c7 2d 93 a2 d1 6d 29 30
DEC 240 HEX f0: b9 01 e8 03 6e d1 c3 83 cd 3c 4c 4d d0 a6 ab 05
DEC 256 HEX 100: 3d 25 ce 49 22 92 4c 55 f0 64 94 33 53 d7 8a 6c
DEC 496 HEX 1f0: 12 c1 aa 44 bb f8 7e 75 e6 11 f6 9b 2c 38 f4 9b
DEC 512 HEX 200: 28 f2 b3 43 4b 65 c0 98 77 47 00 44 c6 ea 17 0d
DEC 752 HEX 2f0: bd 9e f8 22 de 52 88 19 61 34 cf 8a f7 83 93 04
DEC 768 HEX 300: 67 55 9c 23 f0 52 15 84 70 a2 96 f7 25 73 5a 32
DEC 1008 HEX 3f0: 8b ab 26 fb c2 c1 2b 0f 13 e2 ab 18 5e ab f2 41
DEC 1024 HEX 400: 31 18 5a 6d 69 6f 0c fa 9b 42 80 8b 38 e1 32 a2
DEC 1520 HEX 5f0: 56 4d 3d ae 18 3c 52 34 c8 af 1e 51 06 1c 44 b5
DEC 1536 HEX 600: 3c 07 78 a7 b5 f7 2d 3c 23 a3 13 5c 7d 67 b9 f4
DEC 2032 HEX 7f0: f3 43 69 89 0f cf 16 fb 51 7d ca ae 44 63 b2 dd
DEC 2048 HEX 800: 02 f3 1c 81 e8 20 07 31 b8 99 b0 28 e7 91 bf a7
DEC 3056 HEX bf0: 72 da 64 62 83 22 8c 14 30 08 53 70 17 95 61 6f
DEC 3072 HEX c00: 4e 0a 8c 6f 79 34 a7 88 e2 26 5e 81 d6 d0 c8 f4
DEC 4080 HEX ff0: 43 8d d5 ea fe a0 11 1b 6f 36 b4 b9 38 da 2a 68
DEC 4096 HEX 1000: 5f 6b fc 73 81 58 74 d9 71 00 f0 86 97 93 57 d8
Key length: 128 bits.
key: 0xebb46227c6cc8b37641910833222772a
192 bits is next and I am obsessed ππ
DEC 0 HEX 0: 72 0c 94 b6 3e df 44 e1 31 d9 50 ca 21 1a 5a 30
DEC 16 HEX 10: c3 66 fd ea cf 9c a8 04 36 be 7c 35 84 24 d2 0b
DEC 240 HEX f0: b3 39 4a 40 aa bf 75 cb a4 22 82 ef 25 a0 05 9f
DEC 256 HEX 100: 48 47 d8 1d a4 94 2d bc 24 9d ef c4 8c 92 2b 9f
DEC 496 HEX 1f0: 08 12 8c 46 9f 27 53 42 ad da 20 2b 2b 58 da 95
DEC 512 HEX 200: 97 0d ac ef 40 ad 98 72 3b ac 5d 69 55 b8 17 61
DEC 752 HEX 2f0: 3c b8 99 93 b0 7b 0c ed 93 de 13 d2 a1 10 13 ac
DEC 768 HEX 300: ef 2d 67 6f 15 45 c2 c1 3d c6 80 a0 2f 4a db fe
DEC 1008 HEX 3f0: b6 05 95 51 4f 24 bc 9f e5 22 a6 ca d7 39 36 44
DEC 1024 HEX 400: b5 15 a8 c5 01 17 54 f5 90 03 05 8b db 81 51 4e
DEC 1520 HEX 5f0: 3c 70 04 7e 8c bc 03 8e 3b 98 20 db 60 1d a4 95
DEC 1536 HEX 600: 11 75 da 6e e7 56 de 46 a5 3e 2b 07 56 60 b7 70
DEC 2032 HEX 7f0: 00 a5 42 bb a0 21 11 cc 2c 65 b3 8e bd ba 58 7e
DEC 2048 HEX 800: 58 65 fd bb 5b 48 06 41 04 e8 30 b3 80 f2 ae de
DEC 3056 HEX bf0: 34 b2 1a d2 ad 44 e9 99 db 2d 7f 08 63 f0 d9 b6
DEC 3072 HEX c00: 84 a9 21 8f c3 6e 8a 5f 2c cf be ae 53 a2 7d 25
DEC 4080 HEX ff0: a2 22 1a 11 b8 33 cc b4 98 a5 95 40 f0 54 5f 4a
DEC 4096 HEX 1000: 5b be b4 78 7d 59 e5 37 3f db ea 6c 6f 75 c2 9b
Key length: 192 bits.
key: 0xc109163908ebe51debb46227c6cc8b37641910833222772a
and finally the 256-bit key with the longest key of the bunch, and it's giving a whole finale πβ
DEC 0 HEX 0: 54 b6 4e 6b 5a 20 b5 e2 ec 84 59 3d c7 98 9d a7
DEC 16 HEX 10: c1 35 ee e2 37 a8 54 65 ff 97 dc 03 92 4f 45 ce
DEC 240 HEX f0: cf cc 92 2f b4 a1 4a b4 5d 61 75 aa bb f2 d2 01
DEC 256 HEX 100: 83 7b 87 e2 a4 46 ad 0e f7 98 ac d0 2b 94 12 4f
DEC 496 HEX 1f0: 17 a6 db d6 64 92 6a 06 36 b3 f4 c3 7a 4f 46 94
DEC 512 HEX 200: 4a 5f 9f 26 ae ee d4 d4 a2 5f 63 2d 30 52 33 d9
DEC 752 HEX 2f0: 80 a3 d0 1e f0 0c 8e 9a 42 09 c1 7f 4e eb 35 8c
DEC 768 HEX 300: d1 5e 7d 5f fa aa bc 02 07 bf 20 0a 11 77 93 a2
DEC 1008 HEX 3f0: 34 96 82 bf 58 8e aa 52 d0 aa 15 60 34 6a ea fa
DEC 1024 HEX 400: f5 85 4c db 76 c8 89 e3 ad 63 35 4e 5f 72 75 e3
DEC 1520 HEX 5f0: 53 2c 7c ec cb 39 df 32 36 31 84 05 a4 b1 27 9c
DEC 1536 HEX 600: ba ef e6 d9 ce b6 51 84 22 60 e0 d1 e0 5e 3b 90
DEC 2032 HEX 7f0: e8 2d 8c 6d b5 4e 3c 63 3f 58 1c 95 2b a0 42 07
DEC 2048 HEX 800: 4b 16 e5 0a bd 38 1b d7 09 00 a9 cd 9a 62 cb 23
DEC 3056 HEX bf0: 36 82 ee 33 bd 14 8b d9 f5 86 56 cd 8f 30 d9 fb
DEC 3072 HEX c00: 1e 5a 0b 84 75 04 5d 9b 20 b2 62 86 24 ed fd 9e
DEC 4080 HEX ff0: 63 ed d6 84 fb 82 62 82 fe 52 8f 9c 0e 92 37 bc
DEC 4096 HEX 1000: e4 dd 2e 98 d6 96 0f ae 0b 43 54 54 56 74 33 91
Key length: 256 bits.
key: 0x1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a
DEC 0 HEX 0: dd 5b cb 00 18 e9 22 d4 94 75 9d 7c 39 5d 02 d3
DEC 16 HEX 10: c8 44 6f 8f 77 ab f7 37 68 53 53 eb 89 a1 c9 eb
DEC 240 HEX f0: af 3e 30 f9 c0 95 04 59 38 15 15 75 c3 fb 90 98
DEC 256 HEX 100: f8 cb 62 74 db 99 b8 0b 1d 20 12 a9 8e d4 8f 0e
DEC 496 HEX 1f0: 25 c3 00 5a 1c b8 5d e0 76 25 98 39 ab 71 98 ab
DEC 512 HEX 200: 9d cb c1 83 e8 cb 99 4b 72 7b 75 be 31 80 76 9c
DEC 752 HEX 2f0: a1 d3 07 8d fa 91 69 50 3e d9 d4 49 1d ee 4e b2
DEC 768 HEX 300: 85 14 a5 49 58 58 09 6f 59 6e 4b cd 66 b1 06 65
DEC 1008 HEX 3f0: 5f 40 d5 9e c1 b0 3b 33 73 8e fa 60 b2 25 5d 31
DEC 1024 HEX 400: 34 77 c7 f7 64 a4 1b ac ef f9 0b f1 4f 92 b7 cc
DEC 1520 HEX 5f0: ac 4e 95 36 8d 99 b9 eb 78 b8 da 8f 81 ff a7 95
DEC 1536 HEX 600: 8c 3c 13 f8 c2 38 8b b7 3f 38 57 6e 65 b7 c4 46
DEC 2032 HEX 7f0: 13 c4 b9 c1 df b6 65 79 ed dd 8a 28 0b 9f 73 16
DEC 2048 HEX 800: dd d2 78 20 55 01 26 69 8e fa ad c6 4b 64 f6 6e
DEC 3056 HEX bf0: f0 8f 2e 66 d2 8e d1 43 f3 a2 37 cf 9d e7 35 59
DEC 3072 HEX c00: 9e a3 6c 52 55 31 b8 80 ba 12 43 34 f5 7b 0b 70
DEC 4080 HEX ff0: d5 a3 9e 3d fc c5 02 80 ba c4 a6 b5 aa 0d ca 7d
DEC 4096 HEX 1000: 37 0b 1c 1f e6 55 91 6d 97 fd 0d 47 ca 1d 72 b8
And that's the whole vector table, bestie π§ every single byte is in there, so you can check your implementation against it byte for byte.
3. Security Considerations πβ¨
Okay, this part is serious, so read it carefully π«Ά. RC4 does not meet the basic criteria you need from an encryption algorithm, because its output can be told apart from random. π That's the big red flag.
The use of RC4 is still recommended against. In particular, nobody should be using it in new specifications π. This note only exists to help existing specifications that already use RC4 keep working together with each other πΈ.
4. Copying Conditions π
Lowkey the easy part π. This document is meant to be treated as a Code Component, which means it's effectively available under the Simplified BSD License. Main character energy for the licensing π.
5. References π
5.1. Normative References
- [RC4]: Schneier, B., "Applied Cryptography: Protocols, Algorithms, and Source Code in C", Second Edition, John Wiley and Sons, New York, NY, 1996.
5.2. Informative References
- [RFC4345]: Harris, B., "Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol", RFC 4345, January 2006.
- [RFC4634]: Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms (SHA and HMAC-SHA)", RFC 4634, July 2006.
- [FMcG]: Fluhrer, S. and D. McGrew, "Statistical Analysis of the Alleged RC4 Keystream Generator",
http://www.mindspring.com/~dmcgrew/rc4-03.pdf. - [LIBGCRYPT]: Koch, W., "Libgcrypt",
http://directory.fsf.org/project/libgcrypt/. - [MANTIN01]: Mantin, I., "Analysis of the Stream Cipher RC4",
http://www.wisdom.weizmann.ac.il/~itsik/RC4/Papers/Mantin1.zip. - [MANTIN05]: Mantin, I., "Predicting and Distinguishing Attacks on RC4 Keystream Generator", Proceedings of EUROCRYPT 2005,
http://www.iacr.org/cryptodb/archive/2005/EUROCRYPT/2597/2597.pdf. - [MIRONOV]: Mironov, I., "(Not So) Random Shuffles of RC4",
http://eprint.iacr.org/2002/067.pdf. - [NETTLE]: Moeller, N., "Nettle - a low-level crypto library",
http://www.gnu.org/software/nettle/. - [OPENSSL]: OpenSSL Team, "The OpenSSL Project",
http://www.openssl.org/. - [SANS]: Hopwood, D., "Standard Cryptographic Algorithm Naming (SANS) entry on RC4",
http://www.users.zetnet.co.uk/hopwood/crypto/scan/cs.html#RC4. - [SHS]: National Institute of Standards and Technology (NIST), "FIPS Publication 180-3: Secure Hash Standard (SHS)", October 2008,
http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.
Authors' Addresses π¦
The two brilliant people who wrote this, and how to reach them π:
Joachim Strombergson
SecWorks Sweden AB
Hogenvagen 5A
Savedalen 433 63
SE
EMail: joachim@secworks.se
Simon Josefsson
Simon Josefsson Datakonsult AB
Hagagatan 24
Stockholm 113 47
SE
EMail: simon@josefsson.org
URI: http://josefsson.org/
π¦ where this page comes from
- ietf: rfc6229 2011-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms