ruby-aes-unroll2 1.0 → 1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'rubygems'
3
4
  require 'ruby-aes'
4
5
  require 'example_helper'
5
6
 
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'rubygems'
3
4
  require 'ruby-aes'
4
5
  require 'example_helper'
5
6
 
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'rubygems'
3
4
  require 'ruby-aes'
4
5
  require 'example_helper'
5
6
  require 'fileutils'
data/lib/ruby-aes.rb CHANGED
@@ -47,7 +47,7 @@ module Aes
47
47
 
48
48
  def Aes.check_key(key_string, kl = 128)
49
49
  kl = Aes.check_kl(kl)
50
- k = key_string.length
50
+ k = key_string ? key_string.length : 0
51
51
  raise "Bad key string or bad key length" if (k != kl/8) && (k != kl/4)
52
52
  hex = (key_string =~ /[a-f0-9A-F]{#{k}}/) == 0 && (k == kl/4)
53
53
  bin = ! hex
@@ -131,8 +131,11 @@ module Aes
131
131
  sout << @@aes.encrypt_buffer(sin)
132
132
  when IO
133
133
  while buf = sin.read(@@bs)
134
- sout << ((buf.length % 16).zero? ? @@aes.encrypt_blocks(buf) :
135
- @@aes.encrypt_buffer(buf))
134
+ if buf.length == @@bs
135
+ sout << @@aes.encrypt_blocks(buf)
136
+ else
137
+ sout << @@aes.encrypt_buffer(buf)
138
+ end
136
139
  end
137
140
  else
138
141
  raise "Bad input stream (String, IO)"
@@ -150,9 +153,12 @@ module Aes
150
153
  when String
151
154
  sout << @@aes.decrypt_buffer(sin)
152
155
  when IO
153
- while buf = sin.read(@@bs)
154
- sout << (sin.eof? ? @@aes.decrypt_buffer(buf) :
155
- @@aes.decrypt_blocks(buf))
156
+ while buf = sin.read(@@bs)#+1)
157
+ if buf.length == @@bs
158
+ sout << @@aes.decrypt_blocks(buf)
159
+ else
160
+ sout << @@aes.decrypt_buffer(buf)
161
+ end
156
162
  end
157
163
  else
158
164
  raise "Bad input stream (String, IO)"
@@ -12,9 +12,11 @@
12
12
  =end
13
13
 
14
14
  require 'ruby-aes/aes_cons'
15
+ require 'ruby-aes/aes_shared'
15
16
 
16
17
  class AesAlg
17
18
  include AesCons
19
+ include AesShared
18
20
 
19
21
  def encryption_key_schedule(key)
20
22
  i = 0
@@ -504,64 +506,6 @@ class AesAlg
504
506
  end
505
507
  end
506
508
 
507
- def encrypt_blocks(buffer)
508
- raise "Bad block length" unless (buffer.length % 16).zero?
509
- ct = ""
510
- block = ""
511
- buffer.each_byte do |char|
512
- block << char
513
- if block.length == 16
514
- ct << encrypt_block(block)
515
- block = ""
516
- end
517
- end
518
- end
519
-
520
- def decrypt_blocks(buffer)
521
- raise "Bad block length" unless (buffer.length % 16).zero?
522
- pt = ""
523
- block = ""
524
- buffer.each_byte do |char|
525
- block << char
526
- if block.length == 16
527
- pt << decrypt_block(block)
528
- block = ""
529
- end
530
- end
531
- end
532
-
533
- def encrypt_buffer(buffer)
534
- ct = ""
535
- block = ""
536
- buffer.each_byte do |char|
537
- block << char
538
- if block.length == 16
539
- ct << encrypt_block(block)
540
- block = ""
541
- end
542
- end
543
- m = 16 - block.length % 16
544
- ct << (m == 16 ? 0 : encrypt_block(block << m.chr * m))
545
- end
546
-
547
- def decrypt_buffer(buffer)
548
- pt = ""
549
- block = ""
550
- buffer.each_byte do |char|
551
- block << char
552
- if block.length == 16
553
- pt << decrypt_block(block)
554
- block = ""
555
- end
556
- end
557
- if block.length == 0
558
- c = pt[-1]
559
- c.chr * c == pt[-c..-1] ? pt[0..-(c+1)] : (raise "Bad Block Padding")
560
- else
561
- pt
562
- end
563
- end
564
-
565
509
  def init(key_length, mode, key, iv = nil)
566
510
  @nb = 4
567
511
  @ek = []
@@ -0,0 +1,77 @@
1
+ =begin
2
+ This file is a part of ruby-aes <http://rubyforge.org/projects/ruby-aes>
3
+ Written by Alex Boussinet <alex.boussinet@gmail.com>
4
+
5
+ It contains the code shared by all the implementations
6
+ =end
7
+
8
+ module AesShared
9
+ def encrypt_blocks(buffer)
10
+ raise "Bad block length" unless (buffer.length % 16).zero?
11
+ ct = ""
12
+ block = ""
13
+ buffer.each_byte do |char|
14
+ block << char
15
+ if block.length == 16
16
+ ct << encrypt_block(block)
17
+ block = ""
18
+ end
19
+ end
20
+ ct
21
+ end
22
+
23
+ def decrypt_blocks(buffer)
24
+ raise "Bad block length" unless (buffer.length % 16).zero?
25
+ pt = ""
26
+ block = ""
27
+ buffer.each_byte do |char|
28
+ block << char
29
+ if block.length == 16
30
+ pt << decrypt_block(block)
31
+ block = ""
32
+ end
33
+ end
34
+ pt
35
+ end
36
+
37
+ def encrypt_buffer(buffer)
38
+ ct = ""
39
+ block = ""
40
+ buffer.each_byte do |char|
41
+ block << char
42
+ if block.length == 16
43
+ ct << encrypt_block(block)
44
+ block = ""
45
+ end
46
+ end
47
+ c = "\000"
48
+ if (m = 16 - block.length % 16) != 16
49
+ c = m.chr
50
+ ct << encrypt_block(block << c * m)
51
+ end
52
+ ct << c
53
+ end
54
+
55
+ def decrypt_buffer(buffer)
56
+ pt = ""
57
+ block = ""
58
+ buffer.each_byte do |char|
59
+ block << char
60
+ if block.length == 16
61
+ pt << decrypt_block(block)
62
+ block = ""
63
+ end
64
+ end
65
+ if block.length != 1
66
+ raise 'Bad Block Padding'
67
+ elsif (c = block[-1]).zero?
68
+ pt
69
+ else
70
+ if block * c == pt[-c..-1]
71
+ pt[0..-c-1]
72
+ else
73
+ raise "Bad Block Padding"
74
+ end
75
+ end
76
+ end
77
+ end
data/test/test_helper.rb CHANGED
@@ -3,8 +3,10 @@ require File.dirname(__FILE__) + '/../lib/ruby-aes'
3
3
 
4
4
  require 'fileutils'
5
5
 
6
- KEY_LENGTH = [128,192,256].freeze
7
- MODES = ['ECB','CBC','OFB','CFB'].freeze
6
+ unless defined? KEY_LENGTH
7
+ KEY_LENGTH = [128,192,256].freeze
8
+ MODES = ['ECB','CBC','OFB','CFB'].freeze
9
+ end
8
10
 
9
11
  def random_fill(n, buffer)
10
12
  n.times do
@@ -13,24 +13,28 @@ class TestRubyAES < Test::Unit::TestCase
13
13
  random_fill(16, @iv)
14
14
  @pt = ""
15
15
  random_fill(64, @pt)
16
- @kl = KEY_LENGTH[(rand * KEY_LENGTH).to_i]
16
+ @kl = KEY_LENGTH[(rand * KEY_LENGTH.length).to_i]
17
17
  @mode = MODES[(rand * MODES.length).to_i]
18
18
  end
19
19
 
20
20
  def test_modes_and_key_lengths
21
+ pt = @pt[0...16]
21
22
  MODES.each do |mode|
22
23
  KEY_LENGTH.each do |kl|
23
- ct = Aes.encrypt_block(kl, mode, @keys[kl], @iv, @pt)
24
+ ct = Aes.encrypt_block(kl, mode, @keys[kl], @iv, pt)
24
25
  npt = Aes.decrypt_block(kl, mode, @keys[kl], @iv, ct)
25
- assert_equal(@pt, npt, "Error in encryption/decryption (#{kl}-#{mode})")
26
+ assert_equal(pt, npt, "Error in encryption/decryption (#{kl}-#{mode})")
26
27
  end
27
28
  end
28
29
  end
29
30
 
30
- def test_encrypt_stream
31
+ def test_encrypt_decrypt_stream
31
32
  file = "_ruby-aes_test_encrypt_stream_"
32
33
  sin = File.open(file, "w+b")
33
34
  random_fill(4242, sin)
35
+ sin.close
36
+
37
+ sin = File.open(file, "rb")
34
38
  sout = File.open("#{file}.aes", "w+b")
35
39
  Aes.encrypt_stream(@kl, @mode, @keys[@kl], @iv, sin, sout)
36
40
  sin.close
@@ -42,18 +46,27 @@ class TestRubyAES < Test::Unit::TestCase
42
46
  sin.close
43
47
  sout.close
44
48
 
45
- assert_equal IO.read(file), IO.read("#{file}.plain"),
46
- "Error in encrypt_stream"
49
+ pt, npt = IO.read(file), IO.read("#{file}.plain")
50
+
51
+ assert_equal pt, npt, "Error in encrypt_decrypt_stream"
52
+ ensure
47
53
  FileUtils.rm_f [ file, "#{file}.aes", "#{file}.plain" ]
48
54
  end
49
55
 
50
- def test_encrypt_buffer
56
+ def test_encrypt_decrypt_buffer
57
+ MODES.each do |mode|
58
+ KEY_LENGTH.each do |kl|
59
+ ct = Aes.encrypt_buffer(kl, mode, @keys[kl], @iv, @pt)
60
+ npt = Aes.decrypt_buffer(kl, mode, @keys[kl], @iv, ct)
61
+ assert_equal(@pt, npt, "Error in encrypt_decrypt_buffer")
62
+ end
63
+ end
51
64
  pt = ""
52
65
  42.times do
53
66
  pt << random_fill(1, pt)
54
67
  ct = Aes.encrypt_buffer(@kl, @mode, @keys[@kl], @iv, pt)
55
68
  npt = Aes.decrypt_buffer(@kl, @mode, @keys[@kl], @iv, ct)
56
- assert_equal(pt, npt, "Error in encrypt buffer (padding)")
69
+ assert_equal(pt, npt, "Error in encrypt_decrypt_buffer")
57
70
  end
58
71
  end
59
72
 
@@ -79,19 +92,19 @@ class TestRubyAES < Test::Unit::TestCase
79
92
 
80
93
  def test_check_key
81
94
  assert_raise(RuntimeError) do
82
- Aes.check_key(@key, 64)
95
+ Aes.check_key(@keys[128], 64)
83
96
  end # bad key length
84
97
  assert_raise(RuntimeError) do
85
98
  Aes.check_key('123', 128)
86
99
  end # bad key string
87
100
  assert_raise(RuntimeError) do
88
- Aes.check_key(@key, 256)
101
+ Aes.check_key(nil, 256)
89
102
  end # bad key string
90
103
  assert_raise(RuntimeError) do
91
- Aes.check_key(@key.unpack('H*'), 128)
104
+ Aes.check_key(@keys[128].unpack('H*'), 128)
92
105
  end # bad key string
93
106
  assert_nothing_raised do
94
- Aes.check_key(@key, @kl)
107
+ Aes.check_key(@keys[@kl], @kl)
95
108
  end
96
109
  end
97
110
 
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.3
2
+ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: ruby-aes-unroll2
5
5
  version: !ruby/object:Gem::Version
6
- version: "1.0"
7
- date: 2007-08-01 00:00:00 +02:00
6
+ version: "1.1"
7
+ date: 2008-01-05 00:00:00 +01:00
8
8
  summary: ruby-aes is an implementation of the Rijndael algorithm (AES)
9
9
  require_paths:
10
10
  - lib
@@ -35,6 +35,13 @@ files:
35
35
  - Rakefile
36
36
  - doc/rdoc
37
37
  - doc/rdoc/files
38
+ - doc/rdoc/files/lib
39
+ - doc/rdoc/files/lib/ruby-aes_rb.html
40
+ - doc/rdoc/files/lib/ruby-aes
41
+ - doc/rdoc/files/lib/ruby-aes/aes_shared_rb.html
42
+ - doc/rdoc/files/CHANGELOG.html
43
+ - doc/rdoc/files/README.html
44
+ - doc/rdoc/files/COPYING.html
38
45
  - doc/rdoc/index.html
39
46
  - doc/rdoc/rdoc-style.css
40
47
  - doc/rdoc/fr_method_index.html
@@ -42,25 +49,15 @@ files:
42
49
  - doc/rdoc/fr_file_index.html
43
50
  - doc/rdoc/created.rid
44
51
  - doc/rdoc/classes
45
- - doc/rdoc/files/lib
46
- - doc/rdoc/files/CHANGELOG.html
47
- - doc/rdoc/files/README.html
48
- - doc/rdoc/files/COPYING.html
49
- - doc/rdoc/files/lib/ruby-aes_rb.html
50
- - doc/rdoc/files/lib/ruby-aes
51
- - doc/rdoc/files/lib/ruby-aes/aes_cons_rb.html
52
- - doc/rdoc/files/lib/ruby-aes/aes_alg_rb.html
53
- - doc/rdoc/classes/AesAlg.html
54
52
  - doc/rdoc/classes/Aes.html
55
- - doc/rdoc/classes/AesCons.html
53
+ - doc/rdoc/classes/AesShared.html
56
54
  - examples/encrypt_block.rb
57
55
  - examples/example_helper.rb
58
56
  - examples/encrypt_stream.rb
59
57
  - examples/encrypt_buffer.rb
60
58
  - lib/ruby-aes
59
+ - lib/ruby-aes/aes_shared.rb
61
60
  - lib/ruby-aes.rb
62
- - lib/ruby-aes/aes_alg.rb
63
- - lib/ruby-aes/aes_cons.rb
64
61
  - test/test_ruby-aes.rb
65
62
  - test/test_helper.rb
66
63
  - test/KAT_MCT
@@ -69,6 +66,8 @@ files:
69
66
  - test/KAT_MCT/table.192
70
67
  - test/KAT_MCT/table.256
71
68
  - test/KAT_MCT/aes_kat_mct.rb
69
+ - lib/ruby-aes/aes_alg.rb
70
+ - lib/ruby-aes/aes_cons.rb
72
71
  test_files:
73
72
  - test/test_ruby-aes.rb
74
73
  - test/test_helper.rb
@@ -1,968 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Class: AesAlg</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="classHeader">
50
- <table class="header-table">
51
- <tr class="top-aligned-row">
52
- <td><strong>Class</strong></td>
53
- <td class="class-name-in-header">AesAlg</td>
54
- </tr>
55
- <tr class="top-aligned-row">
56
- <td><strong>In:</strong></td>
57
- <td>
58
- <a href="../files/lib/ruby-aes/aes_alg_rb.html">
59
- lib/ruby-aes/aes_alg.rb
60
- </a>
61
- <br />
62
- </td>
63
- </tr>
64
-
65
- <tr class="top-aligned-row">
66
- <td><strong>Parent:</strong></td>
67
- <td>
68
- Object
69
- </td>
70
- </tr>
71
- </table>
72
- </div>
73
- <!-- banner header -->
74
-
75
- <div id="bodyContent">
76
-
77
-
78
-
79
- <div id="contextContent">
80
-
81
-
82
-
83
- </div>
84
-
85
- <div id="method-list">
86
- <h3 class="section-bar">Methods</h3>
87
-
88
- <div class="name-list">
89
- <a href="#M000004">_decrypt_block</a>&nbsp;&nbsp;
90
- <a href="#M000003">_encrypt_block</a>&nbsp;&nbsp;
91
- <a href="#M000007">decrypt_block</a>&nbsp;&nbsp;
92
- <a href="#M000009">decrypt_blocks</a>&nbsp;&nbsp;
93
- <a href="#M000011">decrypt_buffer</a>&nbsp;&nbsp;
94
- <a href="#M000002">decryption_key_schedule</a>&nbsp;&nbsp;
95
- <a href="#M000006">encrypt_block</a>&nbsp;&nbsp;
96
- <a href="#M000008">encrypt_blocks</a>&nbsp;&nbsp;
97
- <a href="#M000010">encrypt_buffer</a>&nbsp;&nbsp;
98
- <a href="#M000001">encryption_key_schedule</a>&nbsp;&nbsp;
99
- <a href="#M000012">init</a>&nbsp;&nbsp;
100
- <a href="#M000013">new</a>&nbsp;&nbsp;
101
- <a href="#M000005">xor</a>&nbsp;&nbsp;
102
- </div>
103
- </div>
104
-
105
- </div>
106
-
107
-
108
- <!-- if includes -->
109
- <div id="includes">
110
- <h3 class="section-bar">Included Modules</h3>
111
-
112
- <div id="includes-list">
113
- <span class="include-name"><a href="AesCons.html">AesCons</a></span>
114
- </div>
115
- </div>
116
-
117
- <div id="section">
118
-
119
-
120
-
121
-
122
-
123
-
124
-
125
-
126
- <!-- if method_list -->
127
- <div id="methods">
128
- <h3 class="section-bar">Public Class methods</h3>
129
-
130
- <div id="method-M000013" class="method-detail">
131
- <a name="M000013"></a>
132
-
133
- <div class="method-heading">
134
- <a href="#M000013" class="method-signature">
135
- <span class="method-name">new</span><span class="method-args">(key_length, mode, key, iv = nil)</span>
136
- </a>
137
- </div>
138
-
139
- <div class="method-description">
140
- <p><a class="source-toggle" href="#"
141
- onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
142
- <div class="method-source-code" id="M000013-source">
143
- <pre>
144
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 595</span>
145
- 595: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">key_length</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">iv</span> = <span class="ruby-keyword kw">nil</span>)
146
- 596: <span class="ruby-identifier">init</span>(<span class="ruby-identifier">key_length</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">iv</span>)
147
- 597: <span class="ruby-keyword kw">end</span>
148
- </pre>
149
- </div>
150
- </div>
151
- </div>
152
-
153
- <h3 class="section-bar">Public Instance methods</h3>
154
-
155
- <div id="method-M000007" class="method-detail">
156
- <a name="M000007"></a>
157
-
158
- <div class="method-heading">
159
- <a href="#M000007" class="method-signature">
160
- <span class="method-name">decrypt_block</span><span class="method-args">(block)</span>
161
- </a>
162
- </div>
163
-
164
- <div class="method-description">
165
- <p><a class="source-toggle" href="#"
166
- onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
167
- <div class="method-source-code" id="M000007-source">
168
- <pre>
169
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 489</span>
170
- 489: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">decrypt_block</span>(<span class="ruby-identifier">block</span>)
171
- 490: <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@mode</span>
172
- 491: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'ECB'</span>
173
- 492: <span class="ruby-identifier">_decrypt_block</span>(<span class="ruby-identifier">block</span>)
174
- 493: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'CBC'</span>
175
- 494: <span class="ruby-identifier">o</span> = <span class="ruby-identifier">xor</span>(<span class="ruby-identifier">_decrypt_block</span>(<span class="ruby-identifier">block</span>), <span class="ruby-ivar">@iv</span>)
176
- 495: <span class="ruby-ivar">@iv</span> = <span class="ruby-identifier">block</span>
177
- 496: <span class="ruby-identifier">o</span>
178
- 497: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'OFB'</span>
179
- 498: <span class="ruby-ivar">@iv</span> = <span class="ruby-identifier">_encrypt_block</span>(<span class="ruby-ivar">@iv</span>)
180
- 499: <span class="ruby-identifier">xor</span>(<span class="ruby-ivar">@iv</span>, <span class="ruby-identifier">block</span>)
181
- 500: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'CFB'</span>
182
- 501: <span class="ruby-identifier">o</span> = <span class="ruby-identifier">xor</span>(<span class="ruby-identifier">_encrypt_block</span>(<span class="ruby-ivar">@iv</span>), <span class="ruby-identifier">block</span>)
183
- 502: <span class="ruby-ivar">@iv</span> = <span class="ruby-identifier">block</span>
184
- 503: <span class="ruby-identifier">o</span>
185
- 504: <span class="ruby-keyword kw">end</span>
186
- 505: <span class="ruby-keyword kw">end</span>
187
- </pre>
188
- </div>
189
- </div>
190
- </div>
191
-
192
- <div id="method-M000009" class="method-detail">
193
- <a name="M000009"></a>
194
-
195
- <div class="method-heading">
196
- <a href="#M000009" class="method-signature">
197
- <span class="method-name">decrypt_blocks</span><span class="method-args">(buffer)</span>
198
- </a>
199
- </div>
200
-
201
- <div class="method-description">
202
- <p><a class="source-toggle" href="#"
203
- onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
204
- <div class="method-source-code" id="M000009-source">
205
- <pre>
206
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 520</span>
207
- 520: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">decrypt_blocks</span>(<span class="ruby-identifier">buffer</span>)
208
- 521: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Bad block length&quot;</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">%</span> <span class="ruby-value">16</span>).<span class="ruby-identifier">zero?</span>
209
- 522: <span class="ruby-identifier">pt</span> = <span class="ruby-value str">&quot;&quot;</span>
210
- 523: <span class="ruby-identifier">block</span> = <span class="ruby-value str">&quot;&quot;</span>
211
- 524: <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">each_byte</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">char</span><span class="ruby-operator">|</span>
212
- 525: <span class="ruby-identifier">block</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">char</span>
213
- 526: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">16</span>
214
- 527: <span class="ruby-identifier">pt</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">decrypt_block</span>(<span class="ruby-identifier">block</span>)
215
- 528: <span class="ruby-identifier">block</span> = <span class="ruby-value str">&quot;&quot;</span>
216
- 529: <span class="ruby-keyword kw">end</span>
217
- 530: <span class="ruby-keyword kw">end</span>
218
- 531: <span class="ruby-keyword kw">end</span>
219
- </pre>
220
- </div>
221
- </div>
222
- </div>
223
-
224
- <div id="method-M000011" class="method-detail">
225
- <a name="M000011"></a>
226
-
227
- <div class="method-heading">
228
- <a href="#M000011" class="method-signature">
229
- <span class="method-name">decrypt_buffer</span><span class="method-args">(buffer)</span>
230
- </a>
231
- </div>
232
-
233
- <div class="method-description">
234
- <p><a class="source-toggle" href="#"
235
- onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
236
- <div class="method-source-code" id="M000011-source">
237
- <pre>
238
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 547</span>
239
- 547: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">decrypt_buffer</span>(<span class="ruby-identifier">buffer</span>)
240
- 548: <span class="ruby-identifier">pt</span> = <span class="ruby-value str">&quot;&quot;</span>
241
- 549: <span class="ruby-identifier">block</span> = <span class="ruby-value str">&quot;&quot;</span>
242
- 550: <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">each_byte</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">char</span><span class="ruby-operator">|</span>
243
- 551: <span class="ruby-identifier">block</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">char</span>
244
- 552: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">16</span>
245
- 553: <span class="ruby-identifier">pt</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">decrypt_block</span>(<span class="ruby-identifier">block</span>)
246
- 554: <span class="ruby-identifier">block</span> = <span class="ruby-value str">&quot;&quot;</span>
247
- 555: <span class="ruby-keyword kw">end</span>
248
- 556: <span class="ruby-keyword kw">end</span>
249
- 557: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
250
- 558: <span class="ruby-identifier">c</span> = <span class="ruby-identifier">pt</span>[<span class="ruby-value">-1</span>]
251
- 559: <span class="ruby-identifier">c</span>.<span class="ruby-identifier">chr</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">pt</span>[<span class="ruby-operator">-</span><span class="ruby-identifier">c</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>] <span class="ruby-operator">?</span> <span class="ruby-identifier">pt</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-operator">-</span>(<span class="ruby-identifier">c</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)] <span class="ruby-operator">:</span> (<span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Bad Block Padding&quot;</span>)
252
- 560: <span class="ruby-keyword kw">else</span>
253
- 561: <span class="ruby-identifier">pt</span>
254
- 562: <span class="ruby-keyword kw">end</span>
255
- 563: <span class="ruby-keyword kw">end</span>
256
- </pre>
257
- </div>
258
- </div>
259
- </div>
260
-
261
- <div id="method-M000006" class="method-detail">
262
- <a name="M000006"></a>
263
-
264
- <div class="method-heading">
265
- <a href="#M000006" class="method-signature">
266
- <span class="method-name">encrypt_block</span><span class="method-args">(block)</span>
267
- </a>
268
- </div>
269
-
270
- <div class="method-description">
271
- <p><a class="source-toggle" href="#"
272
- onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
273
- <div class="method-source-code" id="M000006-source">
274
- <pre>
275
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 475</span>
276
- 475: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">encrypt_block</span>(<span class="ruby-identifier">block</span>)
277
- 476: <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@mode</span>
278
- 477: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'ECB'</span>
279
- 478: <span class="ruby-identifier">_encrypt_block</span>(<span class="ruby-identifier">block</span>)
280
- 479: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'CBC'</span>
281
- 480: <span class="ruby-ivar">@iv</span> = <span class="ruby-identifier">_encrypt_block</span>(<span class="ruby-identifier">xor</span>(<span class="ruby-identifier">block</span>, <span class="ruby-ivar">@iv</span>))
282
- 481: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'OFB'</span>
283
- 482: <span class="ruby-ivar">@iv</span> = <span class="ruby-identifier">_encrypt_block</span>(<span class="ruby-ivar">@iv</span>)
284
- 483: <span class="ruby-identifier">xor</span>(<span class="ruby-ivar">@iv</span>, <span class="ruby-identifier">block</span>)
285
- 484: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'CFB'</span>
286
- 485: <span class="ruby-ivar">@iv</span> = <span class="ruby-identifier">xor</span>(<span class="ruby-identifier">_encrypt_block</span>(<span class="ruby-ivar">@iv</span>), <span class="ruby-identifier">block</span>)
287
- 486: <span class="ruby-keyword kw">end</span>
288
- 487: <span class="ruby-keyword kw">end</span>
289
- </pre>
290
- </div>
291
- </div>
292
- </div>
293
-
294
- <div id="method-M000008" class="method-detail">
295
- <a name="M000008"></a>
296
-
297
- <div class="method-heading">
298
- <a href="#M000008" class="method-signature">
299
- <span class="method-name">encrypt_blocks</span><span class="method-args">(buffer)</span>
300
- </a>
301
- </div>
302
-
303
- <div class="method-description">
304
- <p><a class="source-toggle" href="#"
305
- onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
306
- <div class="method-source-code" id="M000008-source">
307
- <pre>
308
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 507</span>
309
- 507: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">encrypt_blocks</span>(<span class="ruby-identifier">buffer</span>)
310
- 508: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Bad block length&quot;</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">%</span> <span class="ruby-value">16</span>).<span class="ruby-identifier">zero?</span>
311
- 509: <span class="ruby-identifier">ct</span> = <span class="ruby-value str">&quot;&quot;</span>
312
- 510: <span class="ruby-identifier">block</span> = <span class="ruby-value str">&quot;&quot;</span>
313
- 511: <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">each_byte</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">char</span><span class="ruby-operator">|</span>
314
- 512: <span class="ruby-identifier">block</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">char</span>
315
- 513: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">16</span>
316
- 514: <span class="ruby-identifier">ct</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">encrypt_block</span>(<span class="ruby-identifier">block</span>)
317
- 515: <span class="ruby-identifier">block</span> = <span class="ruby-value str">&quot;&quot;</span>
318
- 516: <span class="ruby-keyword kw">end</span>
319
- 517: <span class="ruby-keyword kw">end</span>
320
- 518: <span class="ruby-keyword kw">end</span>
321
- </pre>
322
- </div>
323
- </div>
324
- </div>
325
-
326
- <div id="method-M000010" class="method-detail">
327
- <a name="M000010"></a>
328
-
329
- <div class="method-heading">
330
- <a href="#M000010" class="method-signature">
331
- <span class="method-name">encrypt_buffer</span><span class="method-args">(buffer)</span>
332
- </a>
333
- </div>
334
-
335
- <div class="method-description">
336
- <p><a class="source-toggle" href="#"
337
- onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
338
- <div class="method-source-code" id="M000010-source">
339
- <pre>
340
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 533</span>
341
- 533: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">encrypt_buffer</span>(<span class="ruby-identifier">buffer</span>)
342
- 534: <span class="ruby-identifier">ct</span> = <span class="ruby-value str">&quot;&quot;</span>
343
- 535: <span class="ruby-identifier">block</span> = <span class="ruby-value str">&quot;&quot;</span>
344
- 536: <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">each_byte</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">char</span><span class="ruby-operator">|</span>
345
- 537: <span class="ruby-identifier">block</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">char</span>
346
- 538: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">16</span>
347
- 539: <span class="ruby-identifier">ct</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">encrypt_block</span>(<span class="ruby-identifier">block</span>)
348
- 540: <span class="ruby-identifier">block</span> = <span class="ruby-value str">&quot;&quot;</span>
349
- 541: <span class="ruby-keyword kw">end</span>
350
- 542: <span class="ruby-keyword kw">end</span>
351
- 543: <span class="ruby-identifier">m</span> = <span class="ruby-value">16</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">%</span> <span class="ruby-value">16</span>
352
- 544: <span class="ruby-identifier">ct</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">m</span> <span class="ruby-operator">==</span> <span class="ruby-value">16</span> <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">encrypt_block</span>(<span class="ruby-identifier">block</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">chr</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">m</span>))
353
- 545: <span class="ruby-keyword kw">end</span>
354
- </pre>
355
- </div>
356
- </div>
357
- </div>
358
-
359
- <div id="method-M000012" class="method-detail">
360
- <a name="M000012"></a>
361
-
362
- <div class="method-heading">
363
- <a href="#M000012" class="method-signature">
364
- <span class="method-name">init</span><span class="method-args">(key_length, mode, key, iv = nil)</span>
365
- </a>
366
- </div>
367
-
368
- <div class="method-description">
369
- <p><a class="source-toggle" href="#"
370
- onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
371
- <div class="method-source-code" id="M000012-source">
372
- <pre>
373
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 565</span>
374
- 565: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init</span>(<span class="ruby-identifier">key_length</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">iv</span> = <span class="ruby-keyword kw">nil</span>)
375
- 566: <span class="ruby-ivar">@nb</span> = <span class="ruby-value">4</span>
376
- 567: <span class="ruby-ivar">@ek</span> = []
377
- 568: <span class="ruby-ivar">@dk</span> = []
378
- 569: <span class="ruby-ivar">@state</span> = <span class="ruby-keyword kw">nil</span>
379
- 570: <span class="ruby-ivar">@iv</span> = <span class="ruby-value str">&quot;\000&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-value">16</span>
380
- 571: <span class="ruby-ivar">@iv</span> = <span class="ruby-identifier">iv</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">iv</span>
381
- 572: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">key_length</span>
382
- 573: <span class="ruby-keyword kw">when</span> <span class="ruby-value">128</span>
383
- 574: <span class="ruby-ivar">@nk</span> = <span class="ruby-value">4</span>
384
- 575: <span class="ruby-ivar">@nr</span> = <span class="ruby-value">10</span>
385
- 576: <span class="ruby-keyword kw">when</span> <span class="ruby-value">192</span>
386
- 577: <span class="ruby-ivar">@nk</span> = <span class="ruby-value">6</span>
387
- 578: <span class="ruby-ivar">@nr</span> = <span class="ruby-value">12</span>
388
- 579: <span class="ruby-keyword kw">when</span> <span class="ruby-value">256</span>
389
- 580: <span class="ruby-ivar">@nk</span> = <span class="ruby-value">8</span>
390
- 581: <span class="ruby-ivar">@nr</span> = <span class="ruby-value">14</span>
391
- 582: <span class="ruby-keyword kw">else</span>
392
- 583: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'Bad Key length'</span>
393
- 584: <span class="ruby-keyword kw">end</span>
394
- 585: <span class="ruby-ivar">@kl</span> = <span class="ruby-identifier">key_length</span>
395
- 586: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">mode</span>
396
- 587: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'ECB'</span>, <span class="ruby-value str">'CBC'</span>, <span class="ruby-value str">'OFB'</span>, <span class="ruby-value str">'CFB'</span>
397
- 588: <span class="ruby-ivar">@mode</span> = <span class="ruby-identifier">mode</span>
398
- 589: <span class="ruby-keyword kw">else</span>
399
- 590: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'Bad AES mode'</span>
400
- 591: <span class="ruby-keyword kw">end</span>
401
- 592: <span class="ruby-identifier">decryption_key_schedule</span>(<span class="ruby-identifier">key</span>)
402
- 593: <span class="ruby-keyword kw">end</span>
403
- </pre>
404
- </div>
405
- </div>
406
- </div>
407
-
408
- <h3 class="section-bar">Protected Instance methods</h3>
409
-
410
- <div id="method-M000004" class="method-detail">
411
- <a name="M000004"></a>
412
-
413
- <div class="method-heading">
414
- <a href="#M000004" class="method-signature">
415
- <span class="method-name">_decrypt_block</span><span class="method-args">(ct)</span>
416
- </a>
417
- </div>
418
-
419
- <div class="method-description">
420
- <p><a class="source-toggle" href="#"
421
- onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
422
- <div class="method-source-code" id="M000004-source">
423
- <pre>
424
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 309</span>
425
- 309: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">_decrypt_block</span>(<span class="ruby-identifier">ct</span>)
426
- 310: <span class="ruby-comment cmt">#</span>
427
- 311: <span class="ruby-comment cmt"># map byte array block to cipher state and add initial round key:</span>
428
- 312: <span class="ruby-comment cmt">#</span>
429
- 313: <span class="ruby-identifier">s0</span> = (<span class="ruby-identifier">ct</span>[ <span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[ <span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[ <span class="ruby-value">2</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[ <span class="ruby-value">3</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">0</span>]
430
- 314: <span class="ruby-identifier">s1</span> = (<span class="ruby-identifier">ct</span>[ <span class="ruby-value">4</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[ <span class="ruby-value">5</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[ <span class="ruby-value">6</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[ <span class="ruby-value">7</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">1</span>]
431
- 315: <span class="ruby-identifier">s2</span> = (<span class="ruby-identifier">ct</span>[ <span class="ruby-value">8</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[ <span class="ruby-value">9</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[<span class="ruby-value">10</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[<span class="ruby-value">11</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">2</span>]
432
- 316: <span class="ruby-identifier">s3</span> = (<span class="ruby-identifier">ct</span>[<span class="ruby-value">12</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[<span class="ruby-value">13</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[<span class="ruby-value">14</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">ct</span>[<span class="ruby-value">15</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">3</span>]
433
- 317: <span class="ruby-comment cmt"># round 1:</span>
434
- 318: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
435
- 319: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[ <span class="ruby-value">4</span>]
436
- 320: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
437
- 321: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[ <span class="ruby-value">5</span>]
438
- 322: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
439
- 323: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[ <span class="ruby-value">6</span>]
440
- 324: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
441
- 325: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[ <span class="ruby-value">7</span>]
442
- 326: <span class="ruby-comment cmt"># round 2:</span>
443
- 327: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
444
- 328: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[ <span class="ruby-value">8</span>]
445
- 329: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
446
- 330: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[ <span class="ruby-value">9</span>]
447
- 331: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
448
- 332: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">10</span>]
449
- 333: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
450
- 334: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">11</span>]
451
- 335: <span class="ruby-comment cmt"># round 3:</span>
452
- 336: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
453
- 337: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">12</span>]
454
- 338: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
455
- 339: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">13</span>]
456
- 340: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
457
- 341: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">14</span>]
458
- 342: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
459
- 343: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">15</span>]
460
- 344: <span class="ruby-comment cmt"># round 4:</span>
461
- 345: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
462
- 346: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">16</span>]
463
- 347: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
464
- 348: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">17</span>]
465
- 349: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
466
- 350: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">18</span>]
467
- 351: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
468
- 352: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">19</span>]
469
- 353: <span class="ruby-comment cmt"># round 5:</span>
470
- 354: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
471
- 355: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">20</span>]
472
- 356: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
473
- 357: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">21</span>]
474
- 358: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
475
- 359: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">22</span>]
476
- 360: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
477
- 361: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">23</span>]
478
- 362: <span class="ruby-comment cmt"># round 6:</span>
479
- 363: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
480
- 364: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">24</span>]
481
- 365: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
482
- 366: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">25</span>]
483
- 367: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
484
- 368: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">26</span>]
485
- 369: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
486
- 370: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">27</span>]
487
- 371: <span class="ruby-comment cmt"># round 7:</span>
488
- 372: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
489
- 373: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">28</span>]
490
- 374: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
491
- 375: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">29</span>]
492
- 376: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
493
- 377: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">30</span>]
494
- 378: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
495
- 379: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">31</span>]
496
- 380: <span class="ruby-comment cmt"># round 8:</span>
497
- 381: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
498
- 382: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">32</span>]
499
- 383: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
500
- 384: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">33</span>]
501
- 385: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
502
- 386: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">34</span>]
503
- 387: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
504
- 388: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">35</span>]
505
- 389: <span class="ruby-comment cmt"># round 9:</span>
506
- 390: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
507
- 391: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">36</span>]
508
- 392: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
509
- 393: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">37</span>]
510
- 394: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
511
- 395: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">38</span>]
512
- 396: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
513
- 397: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">39</span>]
514
- 398: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@nr</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">10</span>)
515
- 399: <span class="ruby-comment cmt"># round 10:</span>
516
- 400: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
517
- 401: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">40</span>]
518
- 402: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
519
- 403: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">41</span>]
520
- 404: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
521
- 405: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">42</span>]
522
- 406: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
523
- 407: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">43</span>]
524
- 408: <span class="ruby-comment cmt"># round 11:</span>
525
- 409: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
526
- 410: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">44</span>]
527
- 411: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
528
- 412: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">45</span>]
529
- 413: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
530
- 414: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">46</span>]
531
- 415: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
532
- 416: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">47</span>]
533
- 417: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@nr</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">12</span>)
534
- 418: <span class="ruby-comment cmt"># round 12:</span>
535
- 419: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
536
- 420: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">48</span>]
537
- 421: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
538
- 422: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">49</span>]
539
- 423: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
540
- 424: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">50</span>]
541
- 425: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
542
- 426: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">51</span>]
543
- 427: <span class="ruby-comment cmt"># round 13:</span>
544
- 428: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
545
- 429: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">52</span>]
546
- 430: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
547
- 431: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">53</span>]
548
- 432: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
549
- 433: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">54</span>]
550
- 434: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Td0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
551
- 435: <span class="ruby-constant">Td2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Td3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">55</span>]
552
- 436: <span class="ruby-keyword kw">end</span>
553
- 437: <span class="ruby-keyword kw">end</span>
554
- 438: <span class="ruby-identifier">j</span> = <span class="ruby-ivar">@nr</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">2</span>
555
- 439: <span class="ruby-comment cmt">#</span>
556
- 440: <span class="ruby-comment cmt"># apply last round and map cipher state to byte array block:</span>
557
- 441: <span class="ruby-comment cmt">#</span>
558
- 442: <span class="ruby-identifier">s0</span> =
559
- 443: (<span class="ruby-constant">Si3</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span>
560
- 444: (<span class="ruby-constant">Si2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
561
- 445: (<span class="ruby-constant">Si1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
562
- 446: (<span class="ruby-constant">Si0</span>[(<span class="ruby-identifier">t1</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">0</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
563
- 447: <span class="ruby-identifier">s1</span> =
564
- 448: (<span class="ruby-constant">Si3</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span>
565
- 449: (<span class="ruby-constant">Si2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
566
- 450: (<span class="ruby-constant">Si1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
567
- 451: (<span class="ruby-constant">Si0</span>[(<span class="ruby-identifier">t2</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">1</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
568
- 452: <span class="ruby-identifier">s2</span> =
569
- 453: (<span class="ruby-constant">Si3</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span>
570
- 454: (<span class="ruby-constant">Si2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
571
- 455: (<span class="ruby-constant">Si1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
572
- 456: (<span class="ruby-constant">Si0</span>[(<span class="ruby-identifier">t3</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">2</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
573
- 457: <span class="ruby-identifier">s3</span> =
574
- 458: (<span class="ruby-constant">Si3</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span>
575
- 459: (<span class="ruby-constant">Si2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
576
- 460: (<span class="ruby-constant">Si1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
577
- 461: (<span class="ruby-constant">Si0</span>[(<span class="ruby-identifier">t0</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@dk</span>[<span class="ruby-value">3</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
578
- 462: [(<span class="ruby-value str">&quot;%08x%08x%08x%08x&quot;</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">s0</span>, <span class="ruby-identifier">s1</span>, <span class="ruby-identifier">s2</span>, <span class="ruby-identifier">s3</span>])].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;H*&quot;</span>)
579
- 463: <span class="ruby-keyword kw">end</span>
580
- </pre>
581
- </div>
582
- </div>
583
- </div>
584
-
585
- <div id="method-M000003" class="method-detail">
586
- <a name="M000003"></a>
587
-
588
- <div class="method-heading">
589
- <a href="#M000003" class="method-signature">
590
- <span class="method-name">_encrypt_block</span><span class="method-args">(pt)</span>
591
- </a>
592
- </div>
593
-
594
- <div class="method-description">
595
- <p><a class="source-toggle" href="#"
596
- onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
597
- <div class="method-source-code" id="M000003-source">
598
- <pre>
599
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 152</span>
600
- 152: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">_encrypt_block</span>(<span class="ruby-identifier">pt</span>)
601
- 153: <span class="ruby-comment cmt">#</span>
602
- 154: <span class="ruby-comment cmt"># map byte array block to cipher state and add initial round key:</span>
603
- 155: <span class="ruby-comment cmt">#</span>
604
- 156: <span class="ruby-identifier">s0</span> = (<span class="ruby-identifier">pt</span>[ <span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[ <span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[ <span class="ruby-value">2</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[ <span class="ruby-value">3</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">0</span>]
605
- 157: <span class="ruby-identifier">s1</span> = (<span class="ruby-identifier">pt</span>[ <span class="ruby-value">4</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[ <span class="ruby-value">5</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[ <span class="ruby-value">6</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[ <span class="ruby-value">7</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">1</span>]
606
- 158: <span class="ruby-identifier">s2</span> = (<span class="ruby-identifier">pt</span>[ <span class="ruby-value">8</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[ <span class="ruby-value">9</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[<span class="ruby-value">10</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[<span class="ruby-value">11</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">2</span>]
607
- 159: <span class="ruby-identifier">s3</span> = (<span class="ruby-identifier">pt</span>[<span class="ruby-value">12</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[<span class="ruby-value">13</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[<span class="ruby-value">14</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">pt</span>[<span class="ruby-value">15</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">3</span>]
608
- 160: <span class="ruby-comment cmt"># round 1:</span>
609
- 161: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
610
- 162: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">4</span>]
611
- 163: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
612
- 164: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">5</span>]
613
- 165: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
614
- 166: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">6</span>]
615
- 167: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
616
- 168: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">7</span>]
617
- 169: <span class="ruby-comment cmt"># round 2:</span>
618
- 170: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
619
- 171: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">8</span>]
620
- 172: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
621
- 173: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">9</span>]
622
- 174: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
623
- 175: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">10</span>]
624
- 176: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
625
- 177: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">11</span>]
626
- 178: <span class="ruby-comment cmt"># round 3:</span>
627
- 179: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
628
- 180: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">12</span>]
629
- 181: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
630
- 182: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">13</span>]
631
- 183: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
632
- 184: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">14</span>]
633
- 185: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
634
- 186: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">15</span>]
635
- 187: <span class="ruby-comment cmt"># round 4:</span>
636
- 188: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
637
- 189: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">16</span>]
638
- 190: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
639
- 191: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">17</span>]
640
- 192: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
641
- 193: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">18</span>]
642
- 194: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
643
- 195: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">19</span>]
644
- 196: <span class="ruby-comment cmt"># round 5:</span>
645
- 197: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
646
- 198: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">20</span>]
647
- 199: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
648
- 200: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">21</span>]
649
- 201: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
650
- 202: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">22</span>]
651
- 203: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
652
- 204: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">23</span>]
653
- 205: <span class="ruby-comment cmt"># round 6:</span>
654
- 206: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
655
- 207: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">24</span>]
656
- 208: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
657
- 209: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">25</span>]
658
- 210: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
659
- 211: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">26</span>]
660
- 212: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
661
- 213: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">27</span>]
662
- 214: <span class="ruby-comment cmt"># round 7:</span>
663
- 215: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
664
- 216: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">28</span>]
665
- 217: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
666
- 218: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">29</span>]
667
- 219: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
668
- 220: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">30</span>]
669
- 221: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
670
- 222: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">31</span>]
671
- 223: <span class="ruby-comment cmt"># round 8:</span>
672
- 224: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
673
- 225: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">32</span>]
674
- 226: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
675
- 227: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">33</span>]
676
- 228: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
677
- 229: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">34</span>]
678
- 230: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
679
- 231: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">35</span>]
680
- 232: <span class="ruby-comment cmt"># round 9:</span>
681
- 233: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
682
- 234: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">36</span>]
683
- 235: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
684
- 236: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">37</span>]
685
- 237: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
686
- 238: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">38</span>]
687
- 239: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
688
- 240: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">39</span>]
689
- 241: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@nr</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">10</span>)
690
- 242: <span class="ruby-comment cmt"># round 10:</span>
691
- 243: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
692
- 244: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">40</span>]
693
- 245: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
694
- 246: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">41</span>]
695
- 247: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
696
- 248: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">42</span>]
697
- 249: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
698
- 250: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">43</span>]
699
- 251: <span class="ruby-comment cmt"># round 11:</span>
700
- 252: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
701
- 253: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">44</span>]
702
- 254: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
703
- 255: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">45</span>]
704
- 256: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
705
- 257: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">46</span>]
706
- 258: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
707
- 259: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">47</span>]
708
- 260: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@nr</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">12</span>)
709
- 261: <span class="ruby-comment cmt"># round 12:</span>
710
- 262: <span class="ruby-identifier">s0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
711
- 263: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">48</span>]
712
- 264: <span class="ruby-identifier">s1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
713
- 265: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">49</span>]
714
- 266: <span class="ruby-identifier">s2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
715
- 267: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">50</span>]
716
- 268: <span class="ruby-identifier">s3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
717
- 269: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">t2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">51</span>]
718
- 270: <span class="ruby-comment cmt"># round 13:</span>
719
- 271: <span class="ruby-identifier">t0</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
720
- 272: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">52</span>]
721
- 273: <span class="ruby-identifier">t1</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
722
- 274: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s0</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">53</span>]
723
- 275: <span class="ruby-identifier">t2</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
724
- 276: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s1</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">54</span>]
725
- 277: <span class="ruby-identifier">t3</span> = <span class="ruby-constant">Te0</span>[<span class="ruby-identifier">s3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te1</span>[(<span class="ruby-identifier">s0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span>
726
- 278: <span class="ruby-constant">Te2</span>[(<span class="ruby-identifier">s1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-constant">Te3</span>[<span class="ruby-identifier">s2</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">55</span>]
727
- 279: <span class="ruby-keyword kw">end</span>
728
- 280: <span class="ruby-keyword kw">end</span>
729
- 281: <span class="ruby-identifier">j</span> = <span class="ruby-ivar">@nr</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">2</span>
730
- 282: <span class="ruby-comment cmt">#</span>
731
- 283: <span class="ruby-comment cmt"># apply last round and map cipher state to byte array block:</span>
732
- 284: <span class="ruby-comment cmt">#</span>
733
- 285: <span class="ruby-identifier">s0</span> =
734
- 286: (<span class="ruby-constant">S3</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span>
735
- 287: (<span class="ruby-constant">S2</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
736
- 288: (<span class="ruby-constant">S1</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
737
- 289: (<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">t3</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">0</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
738
- 290: <span class="ruby-identifier">s1</span> =
739
- 291: (<span class="ruby-constant">S3</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span>
740
- 292: (<span class="ruby-constant">S2</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
741
- 293: (<span class="ruby-constant">S1</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
742
- 294: (<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">t0</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">1</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
743
- 295: <span class="ruby-identifier">s2</span> =
744
- 296: (<span class="ruby-constant">S3</span>[(<span class="ruby-identifier">t2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span>
745
- 297: (<span class="ruby-constant">S2</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
746
- 298: (<span class="ruby-constant">S1</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
747
- 299: (<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">t1</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">2</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
748
- 300: <span class="ruby-identifier">s3</span> =
749
- 301: (<span class="ruby-constant">S3</span>[(<span class="ruby-identifier">t3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span>
750
- 302: (<span class="ruby-constant">S2</span>[(<span class="ruby-identifier">t0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
751
- 303: (<span class="ruby-constant">S1</span>[(<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
752
- 304: (<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">t2</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">3</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
753
- 305: [(<span class="ruby-value str">&quot;%08x%08x%08x%08x&quot;</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">s0</span>, <span class="ruby-identifier">s1</span>, <span class="ruby-identifier">s2</span>, <span class="ruby-identifier">s3</span>])].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;H*&quot;</span>)
754
- 306: <span class="ruby-keyword kw">end</span>
755
- </pre>
756
- </div>
757
- </div>
758
- </div>
759
-
760
- <div id="method-M000002" class="method-detail">
761
- <a name="M000002"></a>
762
-
763
- <div class="method-heading">
764
- <a href="#M000002" class="method-signature">
765
- <span class="method-name">decryption_key_schedule</span><span class="method-args">(key)</span>
766
- </a>
767
- </div>
768
-
769
- <div class="method-description">
770
- <p><a class="source-toggle" href="#"
771
- onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
772
- <div class="method-source-code" id="M000002-source">
773
- <pre>
774
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 95</span>
775
- 95: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">decryption_key_schedule</span>(<span class="ruby-identifier">key</span>)
776
- 96: <span class="ruby-comment cmt"># expand the cipher key:</span>
777
- 97: <span class="ruby-identifier">encryption_key_schedule</span>(<span class="ruby-identifier">key</span>)
778
- 98: <span class="ruby-ivar">@dk</span> = <span class="ruby-ivar">@ek</span>.<span class="ruby-identifier">dup</span>
779
- 99: <span class="ruby-comment cmt"># invert the order of the round keys:</span>
780
- 100: <span class="ruby-identifier">j</span> = <span class="ruby-value">4</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@nr</span>
781
- 101: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
782
- 102: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
783
- 103: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">j</span>
784
- 104: <span class="ruby-identifier">temp</span> = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">i</span>]
785
- 105: <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span>]
786
- 106: <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span>] = <span class="ruby-identifier">temp</span>
787
- 107: <span class="ruby-identifier">temp</span> = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>]
788
- 108: <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>] = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>]
789
- 109: <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>] = <span class="ruby-identifier">temp</span>
790
- 110: <span class="ruby-identifier">temp</span> = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>]
791
- 111: <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>] = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>]
792
- 112: <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>] = <span class="ruby-identifier">temp</span>
793
- 113: <span class="ruby-identifier">temp</span> = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">3</span>]
794
- 114: <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">3</span>] = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span> <span class="ruby-operator">+</span> <span class="ruby-value">3</span>]
795
- 115: <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span> <span class="ruby-operator">+</span> <span class="ruby-value">3</span>] = <span class="ruby-identifier">temp</span>
796
- 116: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">4</span>
797
- 117: <span class="ruby-identifier">j</span> <span class="ruby-operator">-=</span> <span class="ruby-value">4</span>
798
- 118: <span class="ruby-keyword kw">end</span>
799
- 119: <span class="ruby-comment cmt"># apply the inverse MixColumn transform</span>
800
- 120: <span class="ruby-comment cmt"># to all round keys but the first and the last:</span>
801
- 121: <span class="ruby-identifier">j</span> = <span class="ruby-value">0</span>
802
- 122: <span class="ruby-value">1</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-ivar">@nr</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
803
- 123: <span class="ruby-identifier">j</span> <span class="ruby-operator">+=</span> <span class="ruby-value">4</span>
804
- 124: <span class="ruby-identifier">w0</span>= <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span>]
805
- 125: <span class="ruby-identifier">w1</span> = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>]
806
- 126: <span class="ruby-identifier">w2</span> = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span><span class="ruby-operator">+</span><span class="ruby-value">2</span>]
807
- 127: <span class="ruby-identifier">w3</span> = <span class="ruby-ivar">@dk</span>[<span class="ruby-identifier">j</span><span class="ruby-operator">+</span><span class="ruby-value">3</span>]
808
- 128: <span class="ruby-ivar">@dk</span>[<span class="ruby-value">0</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] =
809
- 129: <span class="ruby-constant">Td0</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)] ]<span class="ruby-operator">^</span>
810
- 130: <span class="ruby-constant">Td1</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ] <span class="ruby-operator">^</span>
811
- 131: <span class="ruby-constant">Td2</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w0</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ] <span class="ruby-operator">^</span>
812
- 132: <span class="ruby-constant">Td3</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w0</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ]
813
- 133: <span class="ruby-ivar">@dk</span>[<span class="ruby-value">1</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] =
814
- 134: <span class="ruby-constant">Td0</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)] ] <span class="ruby-operator">^</span>
815
- 135: <span class="ruby-constant">Td1</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ] <span class="ruby-operator">^</span>
816
- 136: <span class="ruby-constant">Td2</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w1</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ] <span class="ruby-operator">^</span>
817
- 137: <span class="ruby-constant">Td3</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w1</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ]
818
- 138: <span class="ruby-ivar">@dk</span>[<span class="ruby-value">2</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] =
819
- 139: <span class="ruby-constant">Td0</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)] ] <span class="ruby-operator">^</span>
820
- 140: <span class="ruby-constant">Td1</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ] <span class="ruby-operator">^</span>
821
- 141: <span class="ruby-constant">Td2</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w2</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ] <span class="ruby-operator">^</span>
822
- 142: <span class="ruby-constant">Td3</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w2</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ]
823
- 143: <span class="ruby-ivar">@dk</span>[<span class="ruby-value">3</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] =
824
- 144: <span class="ruby-constant">Td0</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)] ] <span class="ruby-operator">^</span>
825
- 145: <span class="ruby-constant">Td1</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ] <span class="ruby-operator">^</span>
826
- 146: <span class="ruby-constant">Td2</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w3</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ] <span class="ruby-operator">^</span>
827
- 147: <span class="ruby-constant">Td3</span>[<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">w3</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>] ]
828
- 148: <span class="ruby-keyword kw">end</span>
829
- 149: <span class="ruby-keyword kw">end</span>
830
- </pre>
831
- </div>
832
- </div>
833
- </div>
834
-
835
- <div id="method-M000001" class="method-detail">
836
- <a name="M000001"></a>
837
-
838
- <div class="method-heading">
839
- <a href="#M000001" class="method-signature">
840
- <span class="method-name">encryption_key_schedule</span><span class="method-args">(key)</span>
841
- </a>
842
- </div>
843
-
844
- <div class="method-description">
845
- <p><a class="source-toggle" href="#"
846
- onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
847
- <div class="method-source-code" id="M000001-source">
848
- <pre>
849
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 19</span>
850
- 19: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">encryption_key_schedule</span>(<span class="ruby-identifier">key</span>)
851
- 20: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
852
- 21: <span class="ruby-ivar">@ek</span> = []
853
- 22: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">0</span>] = <span class="ruby-identifier">key</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">3</span>]
854
- 23: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">1</span>] = <span class="ruby-identifier">key</span>[<span class="ruby-value">4</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">5</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">6</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">7</span>]
855
- 24: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">2</span>] = <span class="ruby-identifier">key</span>[<span class="ruby-value">8</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">9</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">10</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">11</span>]
856
- 25: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">3</span>] = <span class="ruby-identifier">key</span>[<span class="ruby-value">12</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">13</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">14</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">15</span>]
857
- 26: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@kl</span> <span class="ruby-operator">==</span> <span class="ruby-value">128</span>
858
- 27: <span class="ruby-identifier">j</span> = <span class="ruby-value">0</span>
859
- 28: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
860
- 29: <span class="ruby-identifier">temp</span> = <span class="ruby-ivar">@ek</span>[<span class="ruby-value">3</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
861
- 30: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">4</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[<span class="ruby-value">0</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span>
862
- 31: (<span class="ruby-constant">S3</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
863
- 32: (<span class="ruby-constant">S2</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
864
- 33: (<span class="ruby-constant">S1</span>[(<span class="ruby-identifier">temp</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
865
- 34: (<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span> <span class="ruby-constant">RCON</span>[<span class="ruby-identifier">i</span>]
866
- 35: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">5</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[<span class="ruby-value">1</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">4</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
867
- 36: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">6</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[<span class="ruby-value">2</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">5</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
868
- 37: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">7</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[<span class="ruby-value">3</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">6</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
869
- 38: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
870
- 39: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">i</span> <span class="ruby-operator">==</span> <span class="ruby-value">10</span>)
871
- 40: <span class="ruby-identifier">j</span> <span class="ruby-operator">+=</span> <span class="ruby-value">4</span>
872
- 41: <span class="ruby-keyword kw">end</span>
873
- 42: <span class="ruby-keyword kw">end</span>
874
- 43: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">4</span>] = <span class="ruby-identifier">key</span>[<span class="ruby-value">16</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">17</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">18</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">19</span>]
875
- 44: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">5</span>] = <span class="ruby-identifier">key</span>[<span class="ruby-value">20</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">21</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">22</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">23</span>]
876
- 45: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@kl</span> <span class="ruby-operator">==</span> <span class="ruby-value">192</span>)
877
- 46: <span class="ruby-identifier">j</span> = <span class="ruby-value">0</span>
878
- 47: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
879
- 48: <span class="ruby-identifier">temp</span> = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">5</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
880
- 49: <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">6</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">0</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span>
881
- 50: (<span class="ruby-constant">S3</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
882
- 51: (<span class="ruby-constant">S2</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
883
- 52: (<span class="ruby-constant">S1</span>[(<span class="ruby-identifier">temp</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
884
- 53: (<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span> <span class="ruby-constant">RCON</span>[<span class="ruby-identifier">i</span>]
885
- 54: <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">7</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">1</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">6</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
886
- 55: <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">8</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">2</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">7</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
887
- 56: <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">9</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">3</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">8</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
888
- 57: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
889
- 58: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">i</span> <span class="ruby-operator">==</span> <span class="ruby-value">8</span>)
890
- 59: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">10</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">4</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">9</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
891
- 60: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">11</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">5</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">10</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
892
- 61: <span class="ruby-identifier">j</span> <span class="ruby-operator">+=</span> <span class="ruby-value">6</span>
893
- 62: <span class="ruby-keyword kw">end</span>
894
- 63: <span class="ruby-keyword kw">end</span>
895
- 64: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">6</span>] = <span class="ruby-identifier">key</span>[<span class="ruby-value">24</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">25</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">26</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">27</span>]
896
- 65: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">7</span>] = <span class="ruby-identifier">key</span>[<span class="ruby-value">28</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">29</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">30</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">31</span>]
897
- 66: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@kl</span> <span class="ruby-operator">==</span> <span class="ruby-value">256</span>)
898
- 67: <span class="ruby-identifier">j</span> = <span class="ruby-value">0</span>
899
- 68: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
900
- 69: <span class="ruby-identifier">temp</span> = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">7</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
901
- 70: <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">8</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">0</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span>
902
- 71: (<span class="ruby-constant">S3</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
903
- 72: (<span class="ruby-constant">S2</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
904
- 73: (<span class="ruby-constant">S1</span>[(<span class="ruby-identifier">temp</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
905
- 74: (<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span> <span class="ruby-constant">RCON</span>[<span class="ruby-identifier">i</span>]
906
- 75: <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">9</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">1</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">8</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
907
- 76: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">10</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">2</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">9</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
908
- 77: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">11</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">3</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">10</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
909
- 78: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
910
- 79: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">i</span> <span class="ruby-operator">==</span> <span class="ruby-value">7</span>)
911
- 80: <span class="ruby-identifier">temp</span> = <span class="ruby-ivar">@ek</span>[<span class="ruby-value">11</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
912
- 81: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">12</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">4</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span>
913
- 82: (<span class="ruby-constant">S3</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>)]) <span class="ruby-operator">^</span>
914
- 83: (<span class="ruby-constant">S2</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
915
- 84: (<span class="ruby-constant">S1</span>[(<span class="ruby-identifier">temp</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>]) <span class="ruby-operator">^</span>
916
- 85: (<span class="ruby-constant">S0</span>[(<span class="ruby-identifier">temp</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>])
917
- 86: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">13</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">5</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">12</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
918
- 87: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">14</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">6</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">13</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
919
- 88: <span class="ruby-ivar">@ek</span>[<span class="ruby-value">15</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] = <span class="ruby-ivar">@ek</span>[ <span class="ruby-value">7</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>] <span class="ruby-operator">^</span> <span class="ruby-ivar">@ek</span>[<span class="ruby-value">14</span><span class="ruby-operator">+</span><span class="ruby-identifier">j</span>]
920
- 89: <span class="ruby-identifier">j</span> <span class="ruby-operator">+=</span> <span class="ruby-value">8</span>
921
- 90: <span class="ruby-keyword kw">end</span>
922
- 91: <span class="ruby-keyword kw">end</span>
923
- 92: <span class="ruby-keyword kw">end</span>
924
- </pre>
925
- </div>
926
- </div>
927
- </div>
928
-
929
- <div id="method-M000005" class="method-detail">
930
- <a name="M000005"></a>
931
-
932
- <div class="method-heading">
933
- <a href="#M000005" class="method-signature">
934
- <span class="method-name">xor</span><span class="method-args">(a,b)</span>
935
- </a>
936
- </div>
937
-
938
- <div class="method-description">
939
- <p><a class="source-toggle" href="#"
940
- onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
941
- <div class="method-source-code" id="M000005-source">
942
- <pre>
943
- <span class="ruby-comment cmt"># File lib/ruby-aes/aes_alg.rb, line 466</span>
944
- 466: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">xor</span>(<span class="ruby-identifier">a</span>,<span class="ruby-identifier">b</span>)
945
- 467: <span class="ruby-identifier">c</span> = <span class="ruby-value str">&quot;&quot;</span>
946
- 468: <span class="ruby-value">16</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
947
- 469: <span class="ruby-identifier">c</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">a</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">^</span> <span class="ruby-identifier">b</span>[<span class="ruby-identifier">i</span>]).<span class="ruby-identifier">chr</span>
948
- 470: <span class="ruby-keyword kw">end</span>
949
- 471: <span class="ruby-identifier">c</span>
950
- 472: <span class="ruby-keyword kw">end</span>
951
- </pre>
952
- </div>
953
- </div>
954
- </div>
955
-
956
-
957
- </div>
958
-
959
-
960
- </div>
961
-
962
-
963
- <div id="validator-badges">
964
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
965
- </div>
966
-
967
- </body>
968
- </html>