
If you are aware of any errors in any books, please let me know:
Dr. Easttom
,I found an error! Despite the best efforts of myself,
technical editors, copy editors, publishers, etc. Typos' and even occasionally a
substantive error do creep in. I keep a list here. |
Now as you can see below I do acknowledge and post errors. In
fact, I am grateful to readers who send me errors. However, sometimes
people email me with an error and it does turn out to be a
misunderstanding on their part, or simply something they would prefer to
have been worded differently. As I get a large volume of email, please
only send actual errors that you are relatively sure are indeed errors.
Thank you
Quantum Computing Fundamentals 1st Edition
Thanks to a reader who found a typo on page 12. The answer to the matrix multiplication should read:
4 8
7 9
NOT
6 8
7 9
Page 11 the answer to the addition examole in 1.3.1 should be:
5 5
3 5
NOT
5 5
5 3
pag 13, the product of two matrices should be:
3 7
7 18
NOT
3 7
7 15
Page 19 the decimal point on the cosine calculation was accidentally moved to the left one space. What is printed as 8.7307 should be .87307
Page 21 (5 - ?)(5 - ?) - 18 should be (5 - ?)(2 - ?) - 18
Page 51 Equation 2.10, the text says "substitute a=2" but then in the equation a=3 (it should be a=2)
Modern Cryptography: Applied Mathematics for Encryption and Information
Security
Chapter 1 |
Page 7 discussing Affine Ciphers has
Attack at dawn
Frrfj0 fr bfxf
This is a typo,
It should be
Frrfj0 fr lfxf
|
|
Page 29 has 543 mod 26 as 22 but it should be 23 which would lead
to RWK rather than TXM |
Chapter 2 |
The description of the Hill cipher has a misprint. Converting
ATTACK AT DAWN to a matrix should yield
1 20 20
1 3 11
1 20 4
1 23 14
NOT
1 20 20
1 3 11
11 1 20
4 1 23
4 |
Chapter 2 |
ADFGX and ADFGVX Ciphers, the shifting of columns for FALCON
should yield
A C F L N O
-----------
F D A A D A
F F A G X D
F D A A A D
F G A X X F
NOT
A C F L N O
-----------
F D A A D A
F F A G X D
F D A A A D
C G A X X F
Note the last letter of the column under A is misprinted as C rather
than F
|
Chapter
4 |
Fermat Prime is formatted wrong. It should be 2^ 2n
(2 raised to the 2n power)
+ 1 |
Chapter 4 |
It should be a should be 14 not a 12 on page 99 |
Chapter 4 |
Page 96, is missing an 'e' |
Page 112 |
Page 112
has Galois living from 1811 to 1932 which would have made him 121
years old. Obviously that is a typo (though Galois might have liked it
had that been true!) That should be 1811 to 1832
Chapter 4, page 83 The truth table is incorrect on row three. Row three should have an F as the result, not a T |
Chapter 5 |
question 4 should be A ring not C group |
Note on the Birthday Paradox. In the book I describe the birthday
paradox and use DES as an example. This has generated some
negative comments, and frankly one individual has become obsessive on
Amazon.com and other sites on this issue. Allow me to state for
the record:
1. The Birthday paradox in the form described in the text is
applicable to hash collisions, not symmetric ciphers. I was
giving a simplified example. As the book states several times,
the math is simplified so those without a math background can
understand. In this case it may have been over simplified. It is
an unfortunate fact that sometimes when over simplifying something,
one can go too far. And in this case that occurred. To be
more direct: the description of the birthday paradox given in the book
is accurate and detailed, however the application to DES is
inaccurate. The birthday paradox is usually applied to hash
collisions. Yes the birthday paradox can be applied to symmetric
ciphers (as noted below) but not in the basic form presented in the
book.
2. However, there are variations of the birthday paradox that are
applicable to symmetric ciphers. One example is Using collisions
(i.e. birthday paradox) in conjunction with other methods to attack
AES.
https://www.iacr.org/archive/ches2004/31560162/31560162.pdf
There are other papers that use the birthday paradox to modify an
attack on a symmetric cipher (not this is not using the birthday
paradox in the same way it is used in finding a hash collision, but it
is using it as part of an attack on a symmetric cipher):
Kelsey, J., Schneier, B., & Wagner, D. (1997, November).
Related-key cryptanalysis of 3-way, biham-des, cast, des-x, newdes,
rc2, and tea. In International Conference on Information and
Communications Security (pp. 233-246). Springer Berlin
Heidelberg.
This paper discusses Bihams key rotation attack. This paper also has
the following quote "Typically, in related-key cryptanalysis, we
search for a partnered plaintext pair by the birthday paradox, and
the right choice leads to a recognizable match in the
corresponding ciphertexts with probability 1. "
Biryukov, A., & Shamir, A. (2000, December). Cryptanalytic
time/memory/data tradeoffs for stream ciphers. In International
Conference on the Theory and Application of Cryptology and
Information Security (pp. 1-13). Springer, Berlin, Heidelberg.
Vaudenay, S. (2002, May). Security flaws induced by CBC
padding-applications to SSL, IPSEC, WTLS. In
EUROCRYPT
(Vol. 2332, pp. 534-546).
Adams, C. M. (1997). Constructing symmetric ciphers using the
CAST design procedure. Designs, Codes and cryptography,
12(3), 283-316.
C++ Programming Fundamentals
chapter 2 |
Image 2.7 is wrong. It should be
|
Chapter 3 |
In Chapter 3, page 9, you talk about String Properties and Methods, and
the C-style string function that are still used frequently. In Example
3.8,
That line should be
strcat(firststring,secondstring)
then of course
cout << "Both strings you entered are " <<
firststring<< "\n";
What happens with strcat is the second string is appended to the first.
There is no need for a third string.
|
Learn VB.Net 1st Edition
Chapter 1 and 2 |
- The example for the calculator refers to a control array, these are
no longer supported in VB.Net, just use single controls.
- The calculations for the math have an error in the select case
statement. All cases say to add. Each case should do the appropriate
math.
|
Chapter 5 |
The database example (5.1) works fine up to the point where you fill in
the code for the buttons. The appropriate code for the form load, and all
click events is shown here:
Public Class Form1
Inherits System.Windows.Forms.Form
Dim dbindingmanager As BindingManagerBase
#Region " Windows Form Designer generated code "
#End Region
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
' This code is needed to fill in the data set
' with data from the underlying database.
OleDbDataAdapter1.Fill(DataSet11)
' set the binding manager
dbindingmanager = Me.BindingContext(DataSet11, "students")
End Sub
Private Sub btnnext_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnnext.Click
dbindingmanager.Position += 1
End Sub
Private Sub btnprevious_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnprevious.Click
dbindingmanager.Position -= 1
End Sub
End Class
Private Sub btnadd_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnadd.Click
dbindingmanager.AddNew()
End Sub
Private Sub btndelete_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btndelete.Click
dbindingmanager.RemoveAt(dbindingmanager.Position)
End Sub
Private Sub btnupdate_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnupdate.Click
' you must stop editing before updating
dbindingmanager.EndCurrentEdit()
'Update from the dataset
OleDbDataAdapter1.Update(DataSet11.students)
'clear and refill dataset
DataSet11.Clear()
OleDbDataAdapter1.Fill(DataSet11)
End Sub
|
Advanced Java Script 2nd Edition
- In this book I discuss the 'Live Payment' (on page 13)product being used
by Netscape. Netscape has discontinued this product.
The link to their statement on this issue is provided here
Live
Payment
- On page 53 I erroniously state that their is no switch statement in
JavaScript but it may
be included at a later date. It has already been included.
- On page 53 the code says
var number = prompt("Enter a number:", 0)
alert(number, " is a ", typeof number) // "... is a string"
number = parseInt(number)
alert(number, " is a ", typeof number) // "... is a number"
It should say
var number = prompt("Enter a number:", 0)
alert(number + " is a " + typeof(number)) // "... is a string"
number = parseInt(number)
alert(number + " is a " + typeof(number)) // "... is a number"
|