E-Book, Englisch, 481 Seiten, eBook
Welschenbach Cryptography in C and C++
2. Auflage 2017
ISBN: 978-1-4302-5099-9
Verlag: APRESS
Format: PDF
Kopierschutz: 1 - PDF Watermark
E-Book, Englisch, 481 Seiten, eBook
ISBN: 978-1-4302-5099-9
Verlag: APRESS
Format: PDF
Kopierschutz: 1 - PDF Watermark
This book covers everything you need to know to write professional-level cryptographic code. This expanded, improved second edition includes about 100 pages of additional material as well as numerous improvements to the original text. The chapter about random number generation has been completely rewritten, and the latest cryptographic techniques are covered in detail. Furthermore, this book covers the recent improvements in primality testing.
Zielgruppe
Popular/general
Autoren/Hrsg.
Weitere Infos & Material
1;Cover;1
2;Title;2
3;Copyright;3
4;Dedication;4
5;Contents;5
6;Foreword;12
7;About the Author;14
8;About the Translator;15
9;Preface to the Second American Edition;16
10;Preface to the First American Edition;17
11;Preface to the First German Edition;20
12;I Arithmetic and Number Theory in C;23
12.1;1 Introduction;24
12.2;2 Number Formats: The Representation of Large Numbers in C;33
12.3;3 Interface Semantics;38
12.4;4 The Fundamental Operations;41
12.4.1;4.1 Addition and Subtraction;42
12.4.2;4.2 Multiplication;51
12.4.2.1;4.2.1 The Grade SchoolMethod;52
12.4.2.2;4.2.2 Squaring Is Faster;58
12.4.2.3;4.2.3 Do Things Go Better with Karatsuba?;63
12.4.3;4.3 Division with Remainder;68
12.5;5 Modular Arithmetic: Calculating with Residue Classes;84
12.6;6 Where All RoadsMeet:Modular Exponentiation;97
12.6.1;6.1 First Approaches;97
12.6.2;6.2 M-ary Exponentiation;102
12.6.3;6.3 Addition Chains andWindows;117
12.6.4;6.4 Montgomery Reduction and Exponentiation;122
12.6.5;6.5 Cryptographic Application of Exponentiation;134
12.7;7 Bitwise and Logical Functions;140
12.7.1;7.1 Shift Operations;140
12.7.2;7.2 All or Nothing: Bitwise Relations;146
12.7.3;7.3 Direct Access to Individual Binary Digits;152
12.7.4;7.4 Comparison Operators;155
12.8;8 Input, Output, Assignment, Conversion;160
12.9;9 Dynamic Registers;171
12.10;10 Basic Number-Theoretic Functions;180
12.10.1;10.1 Greatest Common Divisor;181
12.10.2;10.2 Multiplicative Inverse in Residue Class Rings;188
12.10.3;10.3 Roots and Logarithms;196
12.10.4;10.4 Square Roots in Residue Class Rings;204
12.10.4.1;10.4.1 The Jacobi Symbol;205
12.10.4.2;10.4.2 Square Roots Modulo pk;211
12.10.4.3;10.4.3 Square RootsModulo n;216
12.10.4.4;10.4.4 Cryptography with Quadratic Residues;224
12.10.5;10.5 A Primality Test;227
12.11;11 Rijndael: A Successor to the Data Encryption Standard;249
12.11.1;11.1 Arithmetic with Polynomials;251
12.11.2;11.2 The Rijndael Algorithm;256
12.11.3;11.3 Calculating the Round Key;259
12.11.4;11.4 The S-Box;260
12.11.5;11.5 The ShiftRowsTransformation;261
12.11.6;11.6 The MixColumnsTransformation;262
12.11.7;11.7 The AddRoundKeyStep;264
12.11.8;11.8 Encryption as a Complete Process;265
12.11.9;11.9 Decryption;268
12.11.10;11.10 Performance;271
12.11.11;11.11 Modes of Operation;272
12.12;12 Large Random Numbers;273
12.12.1;12.1 A Simple Random Number Generator;277
12.12.2;12.2 Cryptographic Random Number Generators;280
12.12.2.1;12.2.1 The Generation of Start Values;281
12.12.2.2;12.2.2 The BBS Random Number Generator;285
12.12.2.3;12.2.3 The AES Generator;291
12.12.2.4;12.2.4 The RMDSHA-1 Generator;295
12.12.3;12.3 Quality Testing;298
12.12.3.1;12.3.1 Chi-Squared Test;299
12.12.3.2;12.3.2 Monobit Test;301
12.12.3.3;12.3.3 Poker Test;301
12.12.3.4;12.3.4 Runs Test;301
12.12.3.5;12.3.5 Longruns Test;301
12.12.3.6;12.3.6 Autocorrelation Test;302
12.12.3.7;12.3.7 Quality of the FLINT/C Random Number Generators;302
12.12.4;12.4 More Complex Functions;303
12.13;13 Strategies for Testing LINT;317
12.13.1;13.1 Static Analysis;319
12.13.2;13.2 Run-Time Tests;321
13;II Arithmetic in C++ with the Class LINT;328
13.1;14 Let C++ Simplify Your Life;329
13.1.1;14.1 Not a Public Affair: The Representation of Numbers in LINT;334
13.1.2;14.2 Constructors;335
13.1.3;14.3 Overloaded Operators;339
13.2;15 The LINTPublic Interface:Members and Friends;346
13.2.1;15.1 Arithmetic;346
13.2.2;15.2 Number Theory;356
13.2.3;15.3 Stream I/O of LINTObjects;361
13.2.3.1;15.3.1 Formatted Output of LINTObjects;362
13.2.3.2;15.3.2 Manipulators;369
13.2.3.3;15.3.3 File I/O for LINTObjects;371
13.3;16 Error Handling;376
13.3.1;16.1 (Don't) Panic;376
13.3.2;16.2 User-Defined Error Handling;378
13.3.3;16.3 LINTExceptions;379
13.4;17 An Application Example: The RSA Cryptosystem;385
13.4.1;17.1 Asymmetric Cryptosystems;386
13.4.2;17.2 The RSA Algorithm;388
13.4.3;17.3 Digital RSA Signatures;403
13.4.4;17.4 RSA Classes in C++;411
13.5;18 Do It Yourself: Test LINT 41319 Approaches for Further Extensions;424
14;III Appendices;426
14.1;A Directory of C Functions;427
14.1.1;A.1 Input/Output, Assignment, Conversions, Comparisons;427
14.1.2;A.2 Basic Calculations;428
14.1.3;A.3 Modular Arithmetic;429
14.1.4;A.4 Bitwise Operations;431
14.1.5;A.5 Number-Theoretic Functions;432
14.1.6;A.6 Generation of Pseudorandom Numbers;433
14.1.7;A.7 RegisterManagement;437
14.2;B Directory of C++ Functions;438
14.2.1;B.1 Input/Output, Conversion, Comparison:Member Functions;438
14.2.2;B.2 Input/Output, Conversion, Comparison: Friend Functions;441
14.2.3;B.3 Basic Operations:Member Functions;443
14.2.4;B.4 Basic Operations: Friend Functions;444
14.2.5;B.5 Modular Arithmetic:Member Functions;445
14.2.6;B.6 Modular Arithmetic: Friend Functions;447
14.2.7;B.7 Bitwise Operations:Member Functions;448
14.2.8;B.8 Bitwise Operations: Friend Functions;449
14.2.9;B.9 Number-TheoreticMember Functions;450
14.2.10;B.10 Number-Theoretic Friend Functions;451
14.2.11;B.11 Generation of Pseudorandom Numbers;455
14.2.12;B.12 Miscellaneous Functions;455
14.3;C Macros;456
14.3.1;C.1 Error Codes and Status Values;456
14.3.2;C.2 Additional Constants;456
14.3.3;C.3 Macros with Parameters;458
14.4;D Calculation Times;463
14.5;E Notation;465
14.6;F Arithmetic and Number-Theoretic Packages;467
15;References;469
16;Index;476