src/eric7/Documentation/Source/eric7.Utilities.crypto.py3AES.html

branch
eric7
changeset 10433
328f3ec4b77a
parent 9209
b99e7fd55fd3
child 10479
856476537696
equal deleted inserted replaced
10432:2fe91fe443dd 10433:328f3ec4b77a
169 <p> 169 <p>
170 Private method to add (XORs) the round key to the state. 170 Private method to add (XORs) the round key to the state.
171 </p> 171 </p>
172 <dl> 172 <dl>
173 173
174 <dt><i>state</i></dt> 174 <dt><i>state</i> (bytearray)</dt>
175 <dd> 175 <dd>
176 state to be changed (bytearray) 176 state to be changed
177 </dd> 177 </dd>
178 <dt><i>roundKey</i></dt> 178 <dt><i>roundKey</i> (bytearray)</dt>
179 <dd> 179 <dd>
180 key to be used for the modification (bytearray) 180 key to be used for the modification
181 </dd> 181 </dd>
182 </dl> 182 </dl>
183 <dl> 183 <dl>
184 <dt>Return:</dt> 184 <dt>Return:</dt>
185 <dd> 185 <dd>
186 modified state (bytearray) 186 modified state
187 </dd>
188 </dl>
189 <dl>
190 <dt>Return Type:</dt>
191 <dd>
192 bytearray
187 </dd> 193 </dd>
188 </dl> 194 </dl>
189 <a NAME="AES.__aes_invMain" ID="AES.__aes_invMain"></a> 195 <a NAME="AES.__aes_invMain" ID="AES.__aes_invMain"></a>
190 <h4>AES.__aes_invMain</h4> 196 <h4>AES.__aes_invMain</h4>
191 <b>__aes_invMain</b>(<i>state, expandedKey, nbrRounds</i>) 197 <b>__aes_invMain</b>(<i>state, expandedKey, nbrRounds</i>)
198 final operations of the inverse AES, creating a round key for 204 final operations of the inverse AES, creating a round key for
199 each round. 205 each round.
200 </p> 206 </p>
201 <dl> 207 <dl>
202 208
203 <dt><i>state</i></dt> 209 <dt><i>state</i> (bytearray)</dt>
204 <dd> 210 <dd>
205 state to be worked on (bytearray) 211 state to be worked on
206 </dd> 212 </dd>
207 <dt><i>expandedKey</i></dt> 213 <dt><i>expandedKey</i> (bytearray)</dt>
208 <dd> 214 <dd>
209 expanded key to be used (bytearray) 215 expanded key to be used
210 </dd> 216 </dd>
211 <dt><i>nbrRounds</i></dt> 217 <dt><i>nbrRounds</i> (int)</dt>
212 <dd> 218 <dd>
213 number of rounds to be done (integer) 219 number of rounds to be done
214 </dd> 220 </dd>
215 </dl> 221 </dl>
216 <dl> 222 <dl>
217 <dt>Return:</dt> 223 <dt>Return:</dt>
218 <dd> 224 <dd>
219 modified state (bytearray) 225 modified state
226 </dd>
227 </dl>
228 <dl>
229 <dt>Return Type:</dt>
230 <dd>
231 bytearray
220 </dd> 232 </dd>
221 </dl> 233 </dl>
222 <a NAME="AES.__aes_invRound" ID="AES.__aes_invRound"></a> 234 <a NAME="AES.__aes_invRound" ID="AES.__aes_invRound"></a>
223 <h4>AES.__aes_invRound</h4> 235 <h4>AES.__aes_invRound</h4>
224 <b>__aes_invRound</b>(<i>state, roundKey</i>) 236 <b>__aes_invRound</b>(<i>state, roundKey</i>)
227 Private method to apply the 4 operations of the inverse round in 239 Private method to apply the 4 operations of the inverse round in
228 sequence. 240 sequence.
229 </p> 241 </p>
230 <dl> 242 <dl>
231 243
232 <dt><i>state</i></dt> 244 <dt><i>state</i> (bytearray)</dt>
233 <dd> 245 <dd>
234 state to be worked on (bytearray) 246 state to be worked on
235 </dd> 247 </dd>
236 <dt><i>roundKey</i></dt> 248 <dt><i>roundKey</i> (bytearray)</dt>
237 <dd> 249 <dd>
238 round key to be used (bytearray) 250 round key to be used
239 </dd> 251 </dd>
240 </dl> 252 </dl>
241 <dl> 253 <dl>
242 <dt>Return:</dt> 254 <dt>Return:</dt>
243 <dd> 255 <dd>
244 modified state (bytearray) 256 modified state
257 </dd>
258 </dl>
259 <dl>
260 <dt>Return Type:</dt>
261 <dd>
262 bytearray
245 </dd> 263 </dd>
246 </dl> 264 </dl>
247 <a NAME="AES.__aes_main" ID="AES.__aes_main"></a> 265 <a NAME="AES.__aes_main" ID="AES.__aes_main"></a>
248 <h4>AES.__aes_main</h4> 266 <h4>AES.__aes_main</h4>
249 <b>__aes_main</b>(<i>state, expandedKey, nbrRounds</i>) 267 <b>__aes_main</b>(<i>state, expandedKey, nbrRounds</i>)
256 final operations of the forward AES, creating a round key for 274 final operations of the forward AES, creating a round key for
257 each round. 275 each round.
258 </p> 276 </p>
259 <dl> 277 <dl>
260 278
261 <dt><i>state</i></dt> 279 <dt><i>state</i> (bytearray)</dt>
262 <dd> 280 <dd>
263 state to be worked on (bytearray) 281 state to be worked on
264 </dd> 282 </dd>
265 <dt><i>expandedKey</i></dt> 283 <dt><i>expandedKey</i> (bytearray)</dt>
266 <dd> 284 <dd>
267 expanded key to be used (bytearray) 285 expanded key to be used
268 </dd> 286 </dd>
269 <dt><i>nbrRounds</i></dt> 287 <dt><i>nbrRounds</i> (int)</dt>
270 <dd> 288 <dd>
271 number of rounds to be done (integer) 289 number of rounds to be done
272 </dd> 290 </dd>
273 </dl> 291 </dl>
274 <dl> 292 <dl>
275 <dt>Return:</dt> 293 <dt>Return:</dt>
276 <dd> 294 <dd>
277 modified state (bytearray) 295 modified state
296 </dd>
297 </dl>
298 <dl>
299 <dt>Return Type:</dt>
300 <dd>
301 bytearray
278 </dd> 302 </dd>
279 </dl> 303 </dl>
280 <a NAME="AES.__aes_round" ID="AES.__aes_round"></a> 304 <a NAME="AES.__aes_round" ID="AES.__aes_round"></a>
281 <h4>AES.__aes_round</h4> 305 <h4>AES.__aes_round</h4>
282 <b>__aes_round</b>(<i>state, roundKey</i>) 306 <b>__aes_round</b>(<i>state, roundKey</i>)
285 Private method to apply the 4 operations of the forward round in 309 Private method to apply the 4 operations of the forward round in
286 sequence. 310 sequence.
287 </p> 311 </p>
288 <dl> 312 <dl>
289 313
290 <dt><i>state</i></dt> 314 <dt><i>state</i> (bytearray)</dt>
291 <dd> 315 <dd>
292 state to be worked on (bytearray) 316 state to be worked on
293 </dd> 317 </dd>
294 <dt><i>roundKey</i></dt> 318 <dt><i>roundKey</i> (bytearray)</dt>
295 <dd> 319 <dd>
296 round key to be used (bytearray) 320 round key to be used
297 </dd> 321 </dd>
298 </dl> 322 </dl>
299 <dl> 323 <dl>
300 <dt>Return:</dt> 324 <dt>Return:</dt>
301 <dd> 325 <dd>
302 modified state (bytearray) 326 modified state
327 </dd>
328 </dl>
329 <dl>
330 <dt>Return Type:</dt>
331 <dd>
332 bytearray
303 </dd> 333 </dd>
304 </dl> 334 </dl>
305 <a NAME="AES.__core" ID="AES.__core"></a> 335 <a NAME="AES.__core" ID="AES.__core"></a>
306 <h4>AES.__core</h4> 336 <h4>AES.__core</h4>
307 <b>__core</b>(<i>data, iteration</i>) 337 <b>__core</b>(<i>data, iteration</i>)
309 <p> 339 <p>
310 Private method performing the key schedule core operation. 340 Private method performing the key schedule core operation.
311 </p> 341 </p>
312 <dl> 342 <dl>
313 343
314 <dt><i>data</i></dt> 344 <dt><i>data</i> (bytearray)</dt>
315 <dd> 345 <dd>
316 data to operate on (bytearray) 346 data to operate on
317 </dd> 347 </dd>
318 <dt><i>iteration</i></dt> 348 <dt><i>iteration</i> (int)</dt>
319 <dd> 349 <dd>
320 iteration counter (integer) 350 iteration counter
321 </dd> 351 </dd>
322 </dl> 352 </dl>
323 <dl> 353 <dl>
324 <dt>Return:</dt> 354 <dt>Return:</dt>
325 <dd> 355 <dd>
326 modified data (bytearray) 356 modified data
357 </dd>
358 </dl>
359 <dl>
360 <dt>Return Type:</dt>
361 <dd>
362 bytearray
327 </dd> 363 </dd>
328 </dl> 364 </dl>
329 <a NAME="AES.__createRoundKey" ID="AES.__createRoundKey"></a> 365 <a NAME="AES.__createRoundKey" ID="AES.__createRoundKey"></a>
330 <h4>AES.__createRoundKey</h4> 366 <h4>AES.__createRoundKey</h4>
331 <b>__createRoundKey</b>(<i>expandedKey, roundKeyPointer</i>) 367 <b>__createRoundKey</b>(<i>expandedKey, roundKeyPointer</i>)
333 <p> 369 <p>
334 Private method to create a round key. 370 Private method to create a round key.
335 </p> 371 </p>
336 <dl> 372 <dl>
337 373
338 <dt><i>expandedKey</i></dt> 374 <dt><i>expandedKey</i> (bytearray)</dt>
339 <dd> 375 <dd>
340 expanded key to be used (bytearray) 376 expanded key to be used
341 </dd> 377 </dd>
342 <dt><i>roundKeyPointer</i></dt> 378 <dt><i>roundKeyPointer</i> (int)</dt>
343 <dd> 379 <dd>
344 position within the expanded key (integer) 380 position within the expanded key
345 </dd> 381 </dd>
346 </dl> 382 </dl>
347 <dl> 383 <dl>
348 <dt>Return:</dt> 384 <dt>Return:</dt>
349 <dd> 385 <dd>
350 round key (bytearray) 386 round key
387 </dd>
388 </dl>
389 <dl>
390 <dt>Return Type:</dt>
391 <dd>
392 bytearray
351 </dd> 393 </dd>
352 </dl> 394 </dl>
353 <a NAME="AES.__expandKey" ID="AES.__expandKey"></a> 395 <a NAME="AES.__expandKey" ID="AES.__expandKey"></a>
354 <h4>AES.__expandKey</h4> 396 <h4>AES.__expandKey</h4>
355 <b>__expandKey</b>(<i>key, size, expandedKeySize</i>) 397 <b>__expandKey</b>(<i>key, size, expandedKeySize</i>)
360 <p> 402 <p>
361 Expands a 128, 192 or 256 bit key into a 176, 208 or 240 bit key. 403 Expands a 128, 192 or 256 bit key into a 176, 208 or 240 bit key.
362 </p> 404 </p>
363 <dl> 405 <dl>
364 406
365 <dt><i>key</i></dt> 407 <dt><i>key</i> (bytes or bytearray)</dt>
366 <dd> 408 <dd>
367 key to be expanded (bytes or bytearray) 409 key to be expanded
368 </dd> 410 </dd>
369 <dt><i>size</i></dt> 411 <dt><i>size</i> (int)</dt>
370 <dd> 412 <dd>
371 size of the key in bytes (16, 24 or 32) 413 size of the key in bytes (16, 24 or 32)
372 </dd> 414 </dd>
373 <dt><i>expandedKeySize</i></dt> 415 <dt><i>expandedKeySize</i> (int)</dt>
374 <dd> 416 <dd>
375 size of the expanded key (integer) 417 size of the expanded key
376 </dd> 418 </dd>
377 </dl> 419 </dl>
378 <dl> 420 <dl>
379 <dt>Return:</dt> 421 <dt>Return:</dt>
380 <dd> 422 <dd>
381 expanded key (bytearray) 423 expanded key
424 </dd>
425 </dl>
426 <dl>
427 <dt>Return Type:</dt>
428 <dd>
429 bytearray
382 </dd> 430 </dd>
383 </dl> 431 </dl>
384 <a NAME="AES.__galois_multiplication" ID="AES.__galois_multiplication"></a> 432 <a NAME="AES.__galois_multiplication" ID="AES.__galois_multiplication"></a>
385 <h4>AES.__galois_multiplication</h4> 433 <h4>AES.__galois_multiplication</h4>
386 <b>__galois_multiplication</b>(<i>a, b</i>) 434 <b>__galois_multiplication</b>(<i>a, b</i>)
389 Private method to perform a Galois multiplication of 8 bit characters 437 Private method to perform a Galois multiplication of 8 bit characters
390 a and b. 438 a and b.
391 </p> 439 </p>
392 <dl> 440 <dl>
393 441
394 <dt><i>a</i></dt> 442 <dt><i>a</i> (bytes)</dt>
395 <dd> 443 <dd>
396 first factor (byte) 444 first factor
397 </dd> 445 </dd>
398 <dt><i>b</i></dt> 446 <dt><i>b</i> (bytes)</dt>
399 <dd> 447 <dd>
400 second factor (byte) 448 second factor
401 </dd> 449 </dd>
402 </dl> 450 </dl>
403 <dl> 451 <dl>
404 <dt>Return:</dt> 452 <dt>Return:</dt>
405 <dd> 453 <dd>
406 result (byte) 454 result
455 </dd>
456 </dl>
457 <dl>
458 <dt>Return Type:</dt>
459 <dd>
460 bytes
407 </dd> 461 </dd>
408 </dl> 462 </dl>
409 <a NAME="AES.__getRconValue" ID="AES.__getRconValue"></a> 463 <a NAME="AES.__getRconValue" ID="AES.__getRconValue"></a>
410 <h4>AES.__getRconValue</h4> 464 <h4>AES.__getRconValue</h4>
411 <b>__getRconValue</b>(<i>num</i>) 465 <b>__getRconValue</b>(<i>num</i>)
413 <p> 467 <p>
414 Private method to retrieve a given Rcon value. 468 Private method to retrieve a given Rcon value.
415 </p> 469 </p>
416 <dl> 470 <dl>
417 471
418 <dt><i>num</i></dt> 472 <dt><i>num</i> (int)</dt>
419 <dd> 473 <dd>
420 position of the value (integer) 474 position of the value
421 </dd> 475 </dd>
422 </dl> 476 </dl>
423 <dl> 477 <dl>
424 <dt>Return:</dt> 478 <dt>Return:</dt>
425 <dd> 479 <dd>
426 Rcon value (integer) 480 Rcon value
481 </dd>
482 </dl>
483 <dl>
484 <dt>Return Type:</dt>
485 <dd>
486 int
427 </dd> 487 </dd>
428 </dl> 488 </dl>
429 <a NAME="AES.__getSBoxInvert" ID="AES.__getSBoxInvert"></a> 489 <a NAME="AES.__getSBoxInvert" ID="AES.__getSBoxInvert"></a>
430 <h4>AES.__getSBoxInvert</h4> 490 <h4>AES.__getSBoxInvert</h4>
431 <b>__getSBoxInvert</b>(<i>num</i>) 491 <b>__getSBoxInvert</b>(<i>num</i>)
433 <p> 493 <p>
434 Private method to retrieve a given Inverted S-Box value. 494 Private method to retrieve a given Inverted S-Box value.
435 </p> 495 </p>
436 <dl> 496 <dl>
437 497
438 <dt><i>num</i></dt> 498 <dt><i>num</i> (int)</dt>
439 <dd> 499 <dd>
440 position of the value (integer) 500 position of the value
441 </dd> 501 </dd>
442 </dl> 502 </dl>
443 <dl> 503 <dl>
444 <dt>Return:</dt> 504 <dt>Return:</dt>
445 <dd> 505 <dd>
446 value of the Inverted S-Box (integer) 506 value of the Inverted S-Box
507 </dd>
508 </dl>
509 <dl>
510 <dt>Return Type:</dt>
511 <dd>
512 int
447 </dd> 513 </dd>
448 </dl> 514 </dl>
449 <a NAME="AES.__getSBoxValue" ID="AES.__getSBoxValue"></a> 515 <a NAME="AES.__getSBoxValue" ID="AES.__getSBoxValue"></a>
450 <h4>AES.__getSBoxValue</h4> 516 <h4>AES.__getSBoxValue</h4>
451 <b>__getSBoxValue</b>(<i>num</i>) 517 <b>__getSBoxValue</b>(<i>num</i>)
453 <p> 519 <p>
454 Private method to retrieve a given S-Box value. 520 Private method to retrieve a given S-Box value.
455 </p> 521 </p>
456 <dl> 522 <dl>
457 523
458 <dt><i>num</i></dt> 524 <dt><i>num</i> (int)</dt>
459 <dd> 525 <dd>
460 position of the value (integer) 526 position of the value
461 </dd> 527 </dd>
462 </dl> 528 </dl>
463 <dl> 529 <dl>
464 <dt>Return:</dt> 530 <dt>Return:</dt>
465 <dd> 531 <dd>
466 value of the S-Box (integer) 532 value of the S-Box
533 </dd>
534 </dl>
535 <dl>
536 <dt>Return Type:</dt>
537 <dd>
538 int
467 </dd> 539 </dd>
468 </dl> 540 </dl>
469 <a NAME="AES.__mixColumn" ID="AES.__mixColumn"></a> 541 <a NAME="AES.__mixColumn" ID="AES.__mixColumn"></a>
470 <h4>AES.__mixColumn</h4> 542 <h4>AES.__mixColumn</h4>
471 <b>__mixColumn</b>(<i>column, isInv</i>) 543 <b>__mixColumn</b>(<i>column, isInv</i>)
474 Private method to perform a galois multiplication of 1 column the 546 Private method to perform a galois multiplication of 1 column the
475 4x4 matrix. 547 4x4 matrix.
476 </p> 548 </p>
477 <dl> 549 <dl>
478 550
479 <dt><i>column</i></dt> 551 <dt><i>column</i> (bytearray)</dt>
480 <dd> 552 <dd>
481 column to be worked on (bytearray) 553 column to be worked on
482 </dd> 554 </dd>
483 <dt><i>isInv</i></dt> 555 <dt><i>isInv</i> (bool)</dt>
484 <dd> 556 <dd>
485 flag indicating an inverse operation (boolean) 557 flag indicating an inverse operation
486 </dd> 558 </dd>
487 </dl> 559 </dl>
488 <dl> 560 <dl>
489 <dt>Return:</dt> 561 <dt>Return:</dt>
490 <dd> 562 <dd>
491 modified column (bytearray) 563 modified column
564 </dd>
565 </dl>
566 <dl>
567 <dt>Return Type:</dt>
568 <dd>
569 bytearray
492 </dd> 570 </dd>
493 </dl> 571 </dl>
494 <a NAME="AES.__mixColumns" ID="AES.__mixColumns"></a> 572 <a NAME="AES.__mixColumns" ID="AES.__mixColumns"></a>
495 <h4>AES.__mixColumns</h4> 573 <h4>AES.__mixColumns</h4>
496 <b>__mixColumns</b>(<i>state, isInv</i>) 574 <b>__mixColumns</b>(<i>state, isInv</i>)
498 <p> 576 <p>
499 Private method to perform a galois multiplication of the 4x4 matrix. 577 Private method to perform a galois multiplication of the 4x4 matrix.
500 </p> 578 </p>
501 <dl> 579 <dl>
502 580
503 <dt><i>state</i></dt> 581 <dt><i>state</i> (bytearray)</dt>
504 <dd> 582 <dd>
505 state to be worked on (bytearray) 583 state to be worked on
506 </dd> 584 </dd>
507 <dt><i>isInv</i></dt> 585 <dt><i>isInv</i> (bool)</dt>
508 <dd> 586 <dd>
509 flag indicating an inverse operation (boolean) 587 flag indicating an inverse operation
510 </dd> 588 </dd>
511 </dl> 589 </dl>
512 <dl> 590 <dl>
513 <dt>Return:</dt> 591 <dt>Return:</dt>
514 <dd> 592 <dd>
515 modified state (bytearray) 593 modified state
594 </dd>
595 </dl>
596 <dl>
597 <dt>Return Type:</dt>
598 <dd>
599 bytearray
516 </dd> 600 </dd>
517 </dl> 601 </dl>
518 <a NAME="AES.__rotate" ID="AES.__rotate"></a> 602 <a NAME="AES.__rotate" ID="AES.__rotate"></a>
519 <h4>AES.__rotate</h4> 603 <h4>AES.__rotate</h4>
520 <b>__rotate</b>(<i>data</i>) 604 <b>__rotate</b>(<i>data</i>)
526 Rotate the data word eight bits to the left: eg, 610 Rotate the data word eight bits to the left: eg,
527 rotate(1d2c3a4f) == 2c3a4f1d. 611 rotate(1d2c3a4f) == 2c3a4f1d.
528 </p> 612 </p>
529 <dl> 613 <dl>
530 614
531 <dt><i>data</i></dt> 615 <dt><i>data</i> (bytearray)</dt>
532 <dd> 616 <dd>
533 data of size 4 (bytearray) 617 data of size 4
534 </dd> 618 </dd>
535 </dl> 619 </dl>
536 <dl> 620 <dl>
537 <dt>Return:</dt> 621 <dt>Return:</dt>
538 <dd> 622 <dd>
539 rotated data (bytearray) 623 rotated data
624 </dd>
625 </dl>
626 <dl>
627 <dt>Return Type:</dt>
628 <dd>
629 bytearray
540 </dd> 630 </dd>
541 </dl> 631 </dl>
542 <a NAME="AES.__shiftRow" ID="AES.__shiftRow"></a> 632 <a NAME="AES.__shiftRow" ID="AES.__shiftRow"></a>
543 <h4>AES.__shiftRow</h4> 633 <h4>AES.__shiftRow</h4>
544 <b>__shiftRow</b>(<i>state, statePointer, nbr, isInv</i>) 634 <b>__shiftRow</b>(<i>state, statePointer, nbr, isInv</i>)
546 <p> 636 <p>
547 Private method to shift the bytes of a row to the left. 637 Private method to shift the bytes of a row to the left.
548 </p> 638 </p>
549 <dl> 639 <dl>
550 640
551 <dt><i>state</i></dt> 641 <dt><i>state</i> (bytearray)</dt>
552 <dd> 642 <dd>
553 state to be worked on (bytearray) 643 state to be worked on
554 </dd> 644 </dd>
555 <dt><i>statePointer</i></dt> 645 <dt><i>statePointer</i> (int)</dt>
556 <dd> 646 <dd>
557 index into the state (integer) 647 index into the state
558 </dd> 648 </dd>
559 <dt><i>nbr</i></dt> 649 <dt><i>nbr</i> (int)</dt>
560 <dd> 650 <dd>
561 number of positions to shift (integer) 651 number of positions to shift
562 </dd> 652 </dd>
563 <dt><i>isInv</i></dt> 653 <dt><i>isInv</i> (bool)</dt>
564 <dd> 654 <dd>
565 flag indicating an inverse operation (boolean) 655 flag indicating an inverse operation
566 </dd> 656 </dd>
567 </dl> 657 </dl>
568 <dl> 658 <dl>
569 <dt>Return:</dt> 659 <dt>Return:</dt>
570 <dd> 660 <dd>
571 modified state (bytearray) 661 modified state
662 </dd>
663 </dl>
664 <dl>
665 <dt>Return Type:</dt>
666 <dd>
667 bytearray
572 </dd> 668 </dd>
573 </dl> 669 </dl>
574 <a NAME="AES.__shiftRows" ID="AES.__shiftRows"></a> 670 <a NAME="AES.__shiftRows" ID="AES.__shiftRows"></a>
575 <h4>AES.__shiftRows</h4> 671 <h4>AES.__shiftRows</h4>
576 <b>__shiftRows</b>(<i>state, isInv</i>) 672 <b>__shiftRows</b>(<i>state, isInv</i>)
579 Private method to iterate over the 4 rows and call __shiftRow() with 675 Private method to iterate over the 4 rows and call __shiftRow() with
580 that row. 676 that row.
581 </p> 677 </p>
582 <dl> 678 <dl>
583 679
584 <dt><i>state</i></dt> 680 <dt><i>state</i> (bytearray)</dt>
585 <dd> 681 <dd>
586 state to be worked on (bytearray) 682 state to be worked on
587 </dd> 683 </dd>
588 <dt><i>isInv</i></dt> 684 <dt><i>isInv</i> (bool)</dt>
589 <dd> 685 <dd>
590 flag indicating an inverse operation (boolean) 686 flag indicating an inverse operation
591 </dd> 687 </dd>
592 </dl> 688 </dl>
593 <dl> 689 <dl>
594 <dt>Return:</dt> 690 <dt>Return:</dt>
595 <dd> 691 <dd>
596 modified state (bytearray) 692 modified state
693 </dd>
694 </dl>
695 <dl>
696 <dt>Return Type:</dt>
697 <dd>
698 bytearray
597 </dd> 699 </dd>
598 </dl> 700 </dl>
599 <a NAME="AES.__subBytes" ID="AES.__subBytes"></a> 701 <a NAME="AES.__subBytes" ID="AES.__subBytes"></a>
600 <h4>AES.__subBytes</h4> 702 <h4>AES.__subBytes</h4>
601 <b>__subBytes</b>(<i>state, isInv</i>) 703 <b>__subBytes</b>(<i>state, isInv</i>)
604 Private method to substitute all the values from the state with the 706 Private method to substitute all the values from the state with the
605 value in the SBox using the state value as index for the SBox. 707 value in the SBox using the state value as index for the SBox.
606 </p> 708 </p>
607 <dl> 709 <dl>
608 710
609 <dt><i>state</i></dt> 711 <dt><i>state</i> (bytearray)</dt>
610 <dd> 712 <dd>
611 state to be worked on (bytearray) 713 state to be worked on
612 </dd> 714 </dd>
613 <dt><i>isInv</i></dt> 715 <dt><i>isInv</i> (bool)</dt>
614 <dd> 716 <dd>
615 flag indicating an inverse operation (boolean) 717 flag indicating an inverse operation
616 </dd> 718 </dd>
617 </dl> 719 </dl>
618 <dl> 720 <dl>
619 <dt>Return:</dt> 721 <dt>Return:</dt>
620 <dd> 722 <dd>
621 modified state (bytearray) 723 modified state
724 </dd>
725 </dl>
726 <dl>
727 <dt>Return Type:</dt>
728 <dd>
729 bytearray
622 </dd> 730 </dd>
623 </dl> 731 </dl>
624 <a NAME="AES.decrypt" ID="AES.decrypt"></a> 732 <a NAME="AES.decrypt" ID="AES.decrypt"></a>
625 <h4>AES.decrypt</h4> 733 <h4>AES.decrypt</h4>
626 <b>decrypt</b>(<i>iput, key, size</i>) 734 <b>decrypt</b>(<i>iput, key, size</i>)
629 Public method to decrypt a 128 bit input block against the given key 737 Public method to decrypt a 128 bit input block against the given key
630 of size specified. 738 of size specified.
631 </p> 739 </p>
632 <dl> 740 <dl>
633 741
634 <dt><i>iput</i></dt> 742 <dt><i>iput</i> (bytearray)</dt>
635 <dd> 743 <dd>
636 input data (bytearray) 744 input data
637 </dd> 745 </dd>
638 <dt><i>key</i></dt> 746 <dt><i>key</i> (bytes or bytearray)</dt>
639 <dd> 747 <dd>
640 key to be used (bytes or bytearray) 748 key to be used
641 </dd> 749 </dd>
642 <dt><i>size</i></dt> 750 <dt><i>size</i> (int)</dt>
643 <dd> 751 <dd>
644 key size (16, 24 or 32) 752 key size (16, 24 or 32)
645 </dd> 753 </dd>
646 </dl> 754 </dl>
647 <dl> 755 <dl>
648 <dt>Return:</dt> 756 <dt>Return:</dt>
649 <dd> 757 <dd>
650 decrypted data (bytes) 758 decrypted data
759 </dd>
760 </dl>
761 <dl>
762 <dt>Return Type:</dt>
763 <dd>
764 bytes
651 </dd> 765 </dd>
652 </dl> 766 </dl>
653 <dl> 767 <dl>
654 768
655 <dt>Raises <b>ValueError</b>:</dt> 769 <dt>Raises <b>ValueError</b>:</dt>
665 Public method to encrypt a 128 bit input block against the given key 779 Public method to encrypt a 128 bit input block against the given key
666 of size specified. 780 of size specified.
667 </p> 781 </p>
668 <dl> 782 <dl>
669 783
670 <dt><i>iput</i></dt> 784 <dt><i>iput</i> (bytearray)</dt>
671 <dd> 785 <dd>
672 input data (bytearray) 786 input data
673 </dd> 787 </dd>
674 <dt><i>key</i></dt> 788 <dt><i>key</i> (bytes or bytearray)</dt>
675 <dd> 789 <dd>
676 key to be used (bytes or bytearray) 790 key to be used
677 </dd> 791 </dd>
678 <dt><i>size</i></dt> 792 <dt><i>size</i> (int)</dt>
679 <dd> 793 <dd>
680 key size (16, 24 or 32) 794 key size (16, 24 or 32)
681 </dd> 795 </dd>
682 </dl> 796 </dl>
683 <dl> 797 <dl>
684 <dt>Return:</dt> 798 <dt>Return:</dt>
685 <dd> 799 <dd>
686 encrypted data (bytes) 800 encrypted data
801 </dd>
802 </dl>
803 <dl>
804 <dt>Return Type:</dt>
805 <dd>
806 bytes
687 </dd> 807 </dd>
688 </dl> 808 </dl>
689 <dl> 809 <dl>
690 810
691 <dt>Raises <b>ValueError</b>:</dt> 811 <dt>Raises <b>ValueError</b>:</dt>
744 <p> 864 <p>
745 Private method to extract a range of bytes from the input. 865 Private method to extract a range of bytes from the input.
746 </p> 866 </p>
747 <dl> 867 <dl>
748 868
749 <dt><i>inputData</i></dt> 869 <dt><i>inputData</i> (bytes)</dt>
750 <dd> 870 <dd>
751 input data (bytes) 871 input data
752 </dd> 872 </dd>
753 <dt><i>start</i></dt> 873 <dt><i>start</i> (int)</dt>
754 <dd> 874 <dd>
755 start index (integer) 875 start index
756 </dd> 876 </dd>
757 <dt><i>end</i></dt> 877 <dt><i>end</i> (int)</dt>
758 <dd> 878 <dd>
759 end index (integer) 879 end index
760 </dd> 880 </dd>
761 <dt><i>mode</i></dt> 881 <dt><i>mode</i> (int)</dt>
762 <dd> 882 <dd>
763 mode of operation (0, 1, 2) 883 mode of operation (0, 1, 2)
764 </dd> 884 </dd>
765 </dl> 885 </dl>
766 <dl> 886 <dl>
767 <dt>Return:</dt> 887 <dt>Return:</dt>
768 <dd> 888 <dd>
769 extracted bytes (bytearray) 889 extracted bytes
890 </dd>
891 </dl>
892 <dl>
893 <dt>Return Type:</dt>
894 <dd>
895 bytearray
770 </dd> 896 </dd>
771 </dl> 897 </dl>
772 <a NAME="AESModeOfOperation.decrypt" ID="AESModeOfOperation.decrypt"></a> 898 <a NAME="AESModeOfOperation.decrypt" ID="AESModeOfOperation.decrypt"></a>
773 <h4>AESModeOfOperation.decrypt</h4> 899 <h4>AESModeOfOperation.decrypt</h4>
774 <b>decrypt</b>(<i>cipherIn, originalsize, mode, key, size, IV</i>) 900 <b>decrypt</b>(<i>cipherIn, originalsize, mode, key, size, IV</i>)
776 <p> 902 <p>
777 Public method to perform the decryption operation. 903 Public method to perform the decryption operation.
778 </p> 904 </p>
779 <dl> 905 <dl>
780 906
781 <dt><i>cipherIn</i></dt> 907 <dt><i>cipherIn</i> (bytes)</dt>
782 <dd> 908 <dd>
783 data to be decrypted (bytes) 909 data to be decrypted
784 </dd> 910 </dd>
785 <dt><i>originalsize</i></dt> 911 <dt><i>originalsize</i> (int)</dt>
786 <dd> 912 <dd>
787 unencrypted string length (required for CBC) 913 unencrypted string length (required for CBC)
788 (integer) 914 </dd>
789 </dd> 915 <dt><i>mode</i> (int)</dt>
790 <dt><i>mode</i></dt>
791 <dd> 916 <dd>
792 mode of operation (0, 1 or 2) 917 mode of operation (0, 1 or 2)
793 </dd> 918 </dd>
794 <dt><i>key</i></dt> 919 <dt><i>key</i> (bytes)</dt>
795 <dd> 920 <dd>
796 key to be used (bytes) 921 key to be used
797 </dd> 922 </dd>
798 <dt><i>size</i></dt> 923 <dt><i>size</i> (int)</dt>
799 <dd> 924 <dd>
800 length of the key (16, 24 or 32) 925 length of the key (16, 24 or 32)
801 </dd> 926 </dd>
802 <dt><i>IV</i></dt> 927 <dt><i>IV</i> (bytearray)</dt>
803 <dd> 928 <dd>
804 initialisation vector (bytearray) 929 initialisation vector
805 </dd> 930 </dd>
806 </dl> 931 </dl>
807 <dl> 932 <dl>
808 <dt>Return:</dt> 933 <dt>Return:</dt>
809 <dd> 934 <dd>
810 decrypted data (bytes) 935 decrypted data
936 </dd>
937 </dl>
938 <dl>
939 <dt>Return Type:</dt>
940 <dd>
941 bytes
811 </dd> 942 </dd>
812 </dl> 943 </dl>
813 <dl> 944 <dl>
814 945
815 <dt>Raises <b>ValueError</b>:</dt> 946 <dt>Raises <b>ValueError</b>:</dt>
824 <p> 955 <p>
825 Public method to perform the encryption operation. 956 Public method to perform the encryption operation.
826 </p> 957 </p>
827 <dl> 958 <dl>
828 959
829 <dt><i>inputData</i></dt> 960 <dt><i>inputData</i> (bytes)</dt>
830 <dd> 961 <dd>
831 data to be encrypted (bytes) 962 data to be encrypted
832 </dd> 963 </dd>
833 <dt><i>mode</i></dt> 964 <dt><i>mode</i> (int)</dt>
834 <dd> 965 <dd>
835 mode of operation (0, 1 or 2) 966 mode of operation (0, 1 or 2)
836 </dd> 967 </dd>
837 <dt><i>key</i></dt> 968 <dt><i>key</i> (bytes)</dt>
838 <dd> 969 <dd>
839 key to be used (bytes) 970 key to be used
840 </dd> 971 </dd>
841 <dt><i>size</i></dt> 972 <dt><i>size</i> (int)</dt>
842 <dd> 973 <dd>
843 length of the key (16, 24 or 32) 974 length of the key (16, 24 or 32)
844 </dd> 975 </dd>
845 <dt><i>IV</i></dt> 976 <dt><i>IV</i> (bytearray)</dt>
846 <dd> 977 <dd>
847 initialisation vector (bytearray) 978 initialisation vector
848 </dd> 979 </dd>
849 </dl> 980 </dl>
850 <dl> 981 <dl>
851 <dt>Return:</dt> 982 <dt>Return:</dt>
852 <dd> 983 <dd>
853 tuple with mode of operation, length of the input data and 984 tuple with mode of operation, length of the input data and
854 the encrypted data (integer, integer, bytes) 985 the encrypted data
986 </dd>
987 </dl>
988 <dl>
989 <dt>Return Type:</dt>
990 <dd>
991 tuple of (int, int, bytes)
855 </dd> 992 </dd>
856 </dl> 993 </dl>
857 <dl> 994 <dl>
858 995
859 <dt>Raises <b>ValueError</b>:</dt> 996 <dt>Raises <b>ValueError</b>:</dt>
871 <p> 1008 <p>
872 Function to pad the given data to a multiple of 16-bytes by PKCS7 padding. 1009 Function to pad the given data to a multiple of 16-bytes by PKCS7 padding.
873 </p> 1010 </p>
874 <dl> 1011 <dl>
875 1012
876 <dt><i>b</i></dt> 1013 <dt><i>b</i> (bytes)</dt>
877 <dd> 1014 <dd>
878 data to be padded (bytes) 1015 data to be padded
879 </dd> 1016 </dd>
880 </dl> 1017 </dl>
881 <dl> 1018 <dl>
882 <dt>Return:</dt> 1019 <dt>Return:</dt>
883 <dd> 1020 <dd>
884 padded data (bytes) 1021 padded data
1022 </dd>
1023 </dl>
1024 <dl>
1025 <dt>Return Type:</dt>
1026 <dd>
1027 bytes
885 </dd> 1028 </dd>
886 </dl> 1029 </dl>
887 <div align="right"><a href="#top">Up</a></div> 1030 <div align="right"><a href="#top">Up</a></div>
888 <hr /> 1031 <hr />
889 <hr /> 1032 <hr />
894 <p> 1037 <p>
895 Module function to decrypt the given data with the given key. 1038 Module function to decrypt the given data with the given key.
896 </p> 1039 </p>
897 <dl> 1040 <dl>
898 1041
899 <dt><i>key</i></dt> 1042 <dt><i>key</i> (bytes)</dt>
900 <dd> 1043 <dd>
901 key to be used for decryption (bytes) 1044 key to be used for decryption
902 </dd> 1045 </dd>
903 <dt><i>data</i></dt> 1046 <dt><i>data</i> (bytes)</dt>
904 <dd> 1047 <dd>
905 data to be decrypted (with initialization vector prepended) 1048 data to be decrypted (with initialization vector prepended)
906 (bytes) 1049 </dd>
907 </dd> 1050 <dt><i>mode</i> (int)</dt>
908 <dt><i>mode</i></dt>
909 <dd> 1051 <dd>
910 mode of operations (0, 1 or 2) 1052 mode of operations (0, 1 or 2)
911 </dd> 1053 </dd>
912 </dl> 1054 </dl>
913 <dl> 1055 <dl>
914 <dt>Return:</dt> 1056 <dt>Return:</dt>
915 <dd> 1057 <dd>
916 decrypted data (bytes) 1058 decrypted data
1059 </dd>
1060 </dl>
1061 <dl>
1062 <dt>Return Type:</dt>
1063 <dd>
1064 bytes
917 </dd> 1065 </dd>
918 </dl> 1066 </dl>
919 <dl> 1067 <dl>
920 1068
921 <dt>Raises <b>ValueError</b>:</dt> 1069 <dt>Raises <b>ValueError</b>:</dt>
933 <p> 1081 <p>
934 Module function to encrypt the given data with the given key. 1082 Module function to encrypt the given data with the given key.
935 </p> 1083 </p>
936 <dl> 1084 <dl>
937 1085
938 <dt><i>key</i></dt> 1086 <dt><i>key</i> (bytes)</dt>
939 <dd> 1087 <dd>
940 key to be used for encryption (bytes) 1088 key to be used for encryption
941 </dd> 1089 </dd>
942 <dt><i>data</i></dt> 1090 <dt><i>data</i> (bytes)</dt>
943 <dd> 1091 <dd>
944 data to be encrypted (bytes) 1092 data to be encrypted
945 </dd> 1093 </dd>
946 <dt><i>mode</i></dt> 1094 <dt><i>mode</i> (int)</dt>
947 <dd> 1095 <dd>
948 mode of operations (0, 1 or 2) 1096 mode of operations (0, 1 or 2)
949 </dd> 1097 </dd>
950 </dl> 1098 </dl>
951 <dl> 1099 <dl>
952 <dt>Return:</dt> 1100 <dt>Return:</dt>
953 <dd> 1101 <dd>
954 encrypted data prepended with the initialization vector (bytes) 1102 encrypted data prepended with the initialization vector
1103 </dd>
1104 </dl>
1105 <dl>
1106 <dt>Return Type:</dt>
1107 <dd>
1108 bytes
955 </dd> 1109 </dd>
956 </dl> 1110 </dl>
957 <dl> 1111 <dl>
958 1112
959 <dt>Raises <b>ValueError</b>:</dt> 1113 <dt>Raises <b>ValueError</b>:</dt>
971 <p> 1125 <p>
972 Function to strip off PKCS7 padding. 1126 Function to strip off PKCS7 padding.
973 </p> 1127 </p>
974 <dl> 1128 <dl>
975 1129
976 <dt><i>b</i></dt> 1130 <dt><i>b</i> (bytes)</dt>
977 <dd> 1131 <dd>
978 data to be stripped (bytes) 1132 data to be stripped
979 </dd> 1133 </dd>
980 </dl> 1134 </dl>
981 <dl> 1135 <dl>
982 <dt>Return:</dt> 1136 <dt>Return:</dt>
983 <dd> 1137 <dd>
984 stripped data (bytes) 1138 stripped data
1139 </dd>
1140 </dl>
1141 <dl>
1142 <dt>Return Type:</dt>
1143 <dd>
1144 bytes
985 </dd> 1145 </dd>
986 </dl> 1146 </dl>
987 <dl> 1147 <dl>
988 1148
989 <dt>Raises <b>ValueError</b>:</dt> 1149 <dt>Raises <b>ValueError</b>:</dt>

eric ide

mercurial