<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://gcat.davidson.edu/GcatWiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JoIgo</id>
		<title>GcatWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://gcat.davidson.edu/GcatWiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JoIgo"/>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Special:Contributions/JoIgo"/>
		<updated>2026-05-17T07:53:11Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR5.jpg&amp;diff=5044</id>
		<title>File:XOR5.jpg</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR5.jpg&amp;diff=5044"/>
				<updated>2008-06-02T15:22:56Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=5043</id>
		<title>Math Modeling Pages</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=5043"/>
				<updated>2008-06-02T15:22:27Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: /* Exclusive disjunction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the place for math modelers to post ideas, papers, examples and computer programs.&lt;br /&gt;
&lt;br /&gt;
Presentation on Sudoku  (Aaron and John have seen)&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.ucmo.edu/~hchen/talks/sudoku.pdf&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
'''Aaron's Idea'''&lt;br /&gt;
&lt;br /&gt;
''Workin' In, Workin' Out''&lt;br /&gt;
&lt;br /&gt;
[[Image:Hash map.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Papers ==&lt;br /&gt;
[http://www.rfc-archive.org/getrfc.php?rfc=1319 MD2 Message-Digest Algorithm]&lt;br /&gt;
&lt;br /&gt;
==Logical negation==&lt;br /&gt;
&lt;br /&gt;
[[Logical negation]] is an [[logical operation|operation]] on one [[logical value]], typically the value of a [[proposition]], that produces a value of ''true'' if its operand is false and a value of ''false'' if its operand is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''NOT p''' (also written as '''~p''' or '''¬p''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:40%&amp;quot;&lt;br /&gt;
|+ '''Logical Negation'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | ¬p&lt;br /&gt;
|-&lt;br /&gt;
| F || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F&lt;br /&gt;
|}&lt;br /&gt;
==Logical conjunction==&lt;br /&gt;
&lt;br /&gt;
[[Logical conjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p AND q''' (also written as '''p ∧ q''', '''p &amp;amp; q''', or '''p&amp;lt;math&amp;gt;\cdot&amp;lt;/math&amp;gt;q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Conjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p · q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In ordinary language terms, if both ''p'' and ''q'' are true, then the conjunction ''p'' ∧ ''q'' is true.  For all other assignments of logical values to ''p'' and to ''q'' the conjunction ''p'' ∧ ''q'' is false.&lt;br /&gt;
&lt;br /&gt;
It can also be said that if ''p'', then ''p'' ∧ ''q'' is ''q'', otherwise ''p'' ∧ ''q'' is ''p''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Logical disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' [[if and only if]] both of its operands are false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p OR q''' (also written as '''p ∨ q''', '''p || q''', or '''p + q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p + q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stated in English, if ''p'', then ''p'' ∨ ''q'' is ''p'', otherwise ''p'' ∨ ''q'' is ''q''.&lt;br /&gt;
&lt;br /&gt;
==Exclusive disjunction==&lt;br /&gt;
&lt;br /&gt;
[[Exclusive disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if one but not both of its operands is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p XOR q''' (also written as '''p + q''', '''p ⊕ q''', or '''p ≠ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Exclusive Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ⊕ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For two propositions, '''XOR''' can also be written as (p = 1 ∧ q = 0)∨ (p = 0 ∧ q = 1).&lt;br /&gt;
&lt;br /&gt;
This is the most efficient way of making an XOR with simple opperations.&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR.jpg]]&lt;br /&gt;
&lt;br /&gt;
This diagram is the biological representation to: (A'∨B')∧(A∨B)&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR_using_AND_and_NOT_only.jpg]]&lt;br /&gt;
&lt;br /&gt;
The picture above illustrates an XOR gate using only the operations of AND and NOT.  While complicated, it appears to be the easiest way to perform an XOR operation with only AND and NOT.  There are other ways but seem to involve even more operations.  A minimum of 3 ANDs and 4 NOTs appears to be optimal, but is not guaranteed.&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Logical NAND==&lt;br /&gt;
&lt;br /&gt;
The [[logical NAND]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' if and only if both of its operands are true.  In other words, it produces a value of ''true'' if and only if at least one of its operands is false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NAND q''' (also written as '''p | q''' or '''p ↑ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NAND'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↑ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logical NOR==&lt;br /&gt;
&lt;br /&gt;
The [[logical NOR]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are false.  In other words, it produces a value of ''false'' if and only if at least one of its operands is true. ↓ is also known as the [[Peirce arrow]] after its inventor, [[Charles Peirce]], and is a [[Sole sufficient operator]].&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NOR q''' (also written as '''p ⊥ q''' or '''p ↓ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NOR'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↓ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html#Introduction%20to%20neural%20networks Neural Network Models]&lt;br /&gt;
*[http://www.facweb.iitkgp.ernet.in/~niloy/PRESENTATION/ACRI_presentation_97.ppt Cellular Automata Based Authentication]&lt;br /&gt;
*MD5 Paper&lt;br /&gt;
[http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=1762088 Stochastic model of E. coli AI-2 quorum signal circuit reveals alternative synthesis pathways] Describes a Stochastic Petri Net (SPN) model of AI-2 (Lux), provides XML code and rate constants.&lt;br /&gt;
&lt;br /&gt;
How to break MD5 and other Hash functions.. A paper written by Xiaoyun Wang and her co-authors about how to break MD5 – i.e. how to make collisions occur &lt;br /&gt;
http://www.infosec.sdu.edu.cn/uploadfile/papers/How%20to%20Break%20MD5%20and%20Other%20Hash%20Functions.pdf &lt;br /&gt;
Nostradamus attack – i.e. the bit about predicting who will become president by exploiting MD5&lt;br /&gt;
http://www.win.tue.nl/hashclash/Nostradamus/ &lt;br /&gt;
&lt;br /&gt;
The following was taken from http://www.freesoft.org/CIE/RFC/1321/4.htm &lt;br /&gt;
&lt;br /&gt;
MD5 Algorithm Description&lt;br /&gt;
We begin by supposing that we have a b-bit message as input, and that we wish to find its message digest. Here b is an arbitrary nonnegative integer; b may be zero, it need not be a multiple of eight, and it may be arbitrarily large. We imagine the bits of the message written down as follows: &lt;br /&gt;
          m_0 m_1 ... m_{b-1}&lt;br /&gt;
The following five steps are performed to compute the message digest of the message. &lt;br /&gt;
&lt;br /&gt;
Step 1. Append Padding Bits&lt;br /&gt;
The message is &amp;quot;padded&amp;quot; (extended) so that its length (in bits) is congruent to 448, modulo 512. That is, the message is extended so that it is just 64 bits shy of being a multiple of 512 bits long. Padding is always performed, even if the length of the message is already congruent to 448, modulo 512. &lt;br /&gt;
Padding is performed as follows: a single &amp;quot;1&amp;quot; bit is appended to the message, and then &amp;quot;0&amp;quot; bits are appended so that the length in bits of the padded message becomes congruent to 448, modulo 512. In all, at least one bit and at most 512 bits are appended. &lt;br /&gt;
&lt;br /&gt;
Step 2. Append Length&lt;br /&gt;
A 64-bit representation of b (the length of the message before the padding bits were added) is appended to the result of the previous step. In the unlikely event that b is greater than 2^64, then only the low-order 64 bits of b are used. (These bits are appended as two 32-bit words and appended low-order word first in accordance with the previous conventions.) &lt;br /&gt;
At this point the resulting message (after padding with bits and with b) has a length that is an exact multiple of 512 bits. Equivalently, this message has a length that is an exact multiple of 16 (32-bit) words. Let M[0 ... N-1] denote the words of the resulting message, where N is a multiple of 16. &lt;br /&gt;
&lt;br /&gt;
Step 3. Initialize MD Buffer&lt;br /&gt;
A four-word buffer (A,B,C,D) is used to compute the message digest. Here each of A, B, C, D is a 32-bit register. These registers are initialized to the following values in hexadecimal, low-order bytes first): &lt;br /&gt;
          word A: 01 23 45 67&lt;br /&gt;
          word B: 89 ab cd ef&lt;br /&gt;
          word C: fe dc ba 98&lt;br /&gt;
          word D: 76 54 32 10&lt;br /&gt;
&lt;br /&gt;
3.4 Step 4. Process Message in 16-Word Blocks&lt;br /&gt;
We first define four auxiliary functions that each take as input three 32-bit words and produce as output one 32-bit word. &lt;br /&gt;
          F(X,Y,Z) = XY v not(X) Z&lt;br /&gt;
          G(X,Y,Z) = XZ v Y not(Z)&lt;br /&gt;
          H(X,Y,Z) = X xor Y xor Z&lt;br /&gt;
          I(X,Y,Z) = Y xor (X v not(Z))&lt;br /&gt;
In each bit position F acts as a conditional: if X then Y else Z. The function F could have been defined using + instead of v since XY and not(X)Z will never have 1's in the same bit position.) It is interesting to note that if the bits of X, Y, and Z are independent and unbiased, the each bit of F(X,Y,Z) will be independent and unbiased. &lt;br /&gt;
The functions G, H, and I are similar to the function F, in that they act in &amp;quot;bitwise parallel&amp;quot; to produce their output from the bits of X, Y, and Z, in such a manner that if the corresponding bits of X, Y, and Z are independent and unbiased, then each bit of G(X,Y,Z), H(X,Y,Z), and I(X,Y,Z) will be independent and unbiased. Note that the function H is the bit-wise &amp;quot;xor&amp;quot; or &amp;quot;parity&amp;quot; function of its inputs. &lt;br /&gt;
This step uses a 64-element table T[1 ... 64] constructed from the sine function. Let T[i] denote the i-th element of the table, which is equal to the integer part of 4294967296 times abs(sin(i)), where i is in radians. The elements of the table are given in the appendix. &lt;br /&gt;
Do the following: &lt;br /&gt;
   /* Process each 16-word block. */&lt;br /&gt;
   For i = 0 to N/16-1 do&lt;br /&gt;
     /* Copy block i into X. */&lt;br /&gt;
     For j = 0 to 15 do&lt;br /&gt;
       Set X[j] to M[i*16+j].&lt;br /&gt;
     end /* of loop on j */&lt;br /&gt;
&lt;br /&gt;
     /* Save A as AA, B as BB, C as CC, and D as DD. */&lt;br /&gt;
     AA = A&lt;br /&gt;
     BB = B&lt;br /&gt;
&lt;br /&gt;
     CC = C&lt;br /&gt;
     DD = D&lt;br /&gt;
&lt;br /&gt;
     /* Round 1. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + F(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  7  1]  [DABC  1 12  2]  [CDAB  2 17  3]  [BCDA  3 22  4]&lt;br /&gt;
     [ABCD  4  7  5]  [DABC  5 12  6]  [CDAB  6 17  7]  [BCDA  7 22  8]&lt;br /&gt;
     [ABCD  8  7  9]  [DABC  9 12 10]  [CDAB 10 17 11]  [BCDA 11 22 12]&lt;br /&gt;
     [ABCD 12  7 13]  [DABC 13 12 14]  [CDAB 14 17 15]  [BCDA 15 22 16]&lt;br /&gt;
&lt;br /&gt;
     /* Round 2. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + G(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  1  5 17]  [DABC  6  9 18]  [CDAB 11 14 19]  [BCDA  0 20 20]&lt;br /&gt;
     [ABCD  5  5 21]  [DABC 10  9 22]  [CDAB 15 14 23]  [BCDA  4 20 24]&lt;br /&gt;
     [ABCD  9  5 25]  [DABC 14  9 26]  [CDAB  3 14 27]  [BCDA  8 20 28]&lt;br /&gt;
     [ABCD 13  5 29]  [DABC  2  9 30]  [CDAB  7 14 31]  [BCDA 12 20 32]&lt;br /&gt;
&lt;br /&gt;
     /* Round 3. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + H(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  5  4 33]  [DABC  8 11 34]  [CDAB 11 16 35]  [BCDA 14 23 36]&lt;br /&gt;
     [ABCD  1  4 37]  [DABC  4 11 38]  [CDAB  7 16 39]  [BCDA 10 23 40]&lt;br /&gt;
     [ABCD 13  4 41]  [DABC  0 11 42]  [CDAB  3 16 43]  [BCDA  6 23 44]&lt;br /&gt;
     [ABCD  9  4 45]  [DABC 12 11 46]  [CDAB 15 16 47]  [BCDA  2 23 48]&lt;br /&gt;
&lt;br /&gt;
     /* Round 4. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + I(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  6 49]  [DABC  7 10 50]  [CDAB 14 15 51]  [BCDA  5 21 52]&lt;br /&gt;
     [ABCD 12  6 53]  [DABC  3 10 54]  [CDAB 10 15 55]  [BCDA  1 21 56]&lt;br /&gt;
     [ABCD  8  6 57]  [DABC 15 10 58]  [CDAB  6 15 59]  [BCDA 13 21 60]&lt;br /&gt;
     [ABCD  4  6 61]  [DABC 11 10 62]  [CDAB  2 15 63]  [BCDA  9 21 64]&lt;br /&gt;
&lt;br /&gt;
     /* Then perform the following additions. (That is increment each&lt;br /&gt;
        of the four registers by the value it had before this block&lt;br /&gt;
        was started.) */&lt;br /&gt;
     A = A + AA&lt;br /&gt;
     B = B + BB&lt;br /&gt;
     C = C + CC&lt;br /&gt;
     D = D + DD&lt;br /&gt;
&lt;br /&gt;
   end /* of loop on i */&lt;br /&gt;
&lt;br /&gt;
Step 5. Output&lt;br /&gt;
The message digest produced as output is A, B, C, D. That is, we begin with the low-order byte of A, and end with the high-order byte of D. &lt;br /&gt;
This completes the description of MD5. A reference implementation in C is given in the appendix. &lt;br /&gt;
&lt;br /&gt;
Summary&lt;br /&gt;
The MD5 message-digest algorithm is simple to implement, and provides a &amp;quot;fingerprint&amp;quot; or message digest of a message of arbitrary length. It is conjectured that the difficulty of coming up with two messages having the same message digest is on the order of 2^64 operations, and that the difficulty of coming up with any message having a given message digest is on the order of 2^128 operations. The MD5 algorithm has been carefully scrutinized for weaknesses. It is, however, a relatively new algorithm and further security analysis is of course justified, as is the cas Differences Between MD4 and MD5&lt;br /&gt;
The following are the differences between MD4 and MD5: &lt;br /&gt;
1.	A fourth round has been added. &lt;br /&gt;
2.	Each step now has a unique additive constant. &lt;br /&gt;
3.	The function g in round 2 was changed from (XY v XZ v YZ) to (XZ v Y not(Z)) to make g less symmetric. &lt;br /&gt;
4.	Each step now adds in the result of the previous step. This promotes a faster &amp;quot;avalanche effect&amp;quot;. &lt;br /&gt;
5.	The order in which input words are accessed in rounds 2 and 3 is changed, to make these patterns less like each other. &lt;br /&gt;
6.	The shift amounts in each round have been approximately optimized, to yield a faster &amp;quot;avalanche effect.&amp;quot; The shifts in different rounds are distinct.&lt;br /&gt;
&lt;br /&gt;
== Engineering agar ==&lt;br /&gt;
[http://www.biotech.iastate.edu/lab_protocols/EvoAntiResBact.html A lab for showing antibiotic resistance across Amp concentration gradient]&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR4.jpg&amp;diff=4973</id>
		<title>File:XOR4.jpg</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR4.jpg&amp;diff=4973"/>
				<updated>2008-05-29T19:23:14Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR3.jpg&amp;diff=4972</id>
		<title>File:XOR3.jpg</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR3.jpg&amp;diff=4972"/>
				<updated>2008-05-29T19:22:01Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4971</id>
		<title>Math Modeling Pages</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4971"/>
				<updated>2008-05-29T19:21:39Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: /* Exclusive disjunction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the place for math modelers to post ideas, papers, examples and computer programs.&lt;br /&gt;
&lt;br /&gt;
Presentation on Sudoku  (Aaron and John have seen)&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.ucmo.edu/~hchen/talks/sudoku.pdf&lt;br /&gt;
&lt;br /&gt;
== Papers ==&lt;br /&gt;
[http://www.rfc-archive.org/getrfc.php?rfc=1319 MD2 Message-Digest Algorithm]&lt;br /&gt;
&lt;br /&gt;
==Logical negation==&lt;br /&gt;
&lt;br /&gt;
[[Logical negation]] is an [[logical operation|operation]] on one [[logical value]], typically the value of a [[proposition]], that produces a value of ''true'' if its operand is false and a value of ''false'' if its operand is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''NOT p''' (also written as '''~p''' or '''¬p''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:40%&amp;quot;&lt;br /&gt;
|+ '''Logical Negation'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | ¬p&lt;br /&gt;
|-&lt;br /&gt;
| F || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F&lt;br /&gt;
|}&lt;br /&gt;
==Logical conjunction==&lt;br /&gt;
&lt;br /&gt;
[[Logical conjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p AND q''' (also written as '''p ∧ q''', '''p &amp;amp; q''', or '''p&amp;lt;math&amp;gt;\cdot&amp;lt;/math&amp;gt;q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Conjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p · q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In ordinary language terms, if both ''p'' and ''q'' are true, then the conjunction ''p'' ∧ ''q'' is true.  For all other assignments of logical values to ''p'' and to ''q'' the conjunction ''p'' ∧ ''q'' is false.&lt;br /&gt;
&lt;br /&gt;
It can also be said that if ''p'', then ''p'' ∧ ''q'' is ''q'', otherwise ''p'' ∧ ''q'' is ''p''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Logical disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' [[if and only if]] both of its operands are false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p OR q''' (also written as '''p ∨ q''', '''p || q''', or '''p + q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p + q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stated in English, if ''p'', then ''p'' ∨ ''q'' is ''p'', otherwise ''p'' ∨ ''q'' is ''q''.&lt;br /&gt;
&lt;br /&gt;
==Exclusive disjunction==&lt;br /&gt;
&lt;br /&gt;
[[Exclusive disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if one but not both of its operands is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p XOR q''' (also written as '''p + q''', '''p ⊕ q''', or '''p ≠ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Exclusive Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ⊕ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For two propositions, '''XOR''' can also be written as (p = 1 ∧ q = 0)∨ (p = 0 ∧ q = 1).&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR.jpg]]&lt;br /&gt;
&lt;br /&gt;
This diagram is the biological representation to: (A'∨B')∧(A∨B)&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR_using_AND_and_NOT_only.jpg]]&lt;br /&gt;
&lt;br /&gt;
The picture above illustrates an XOR gate using only the operations of AND and NOT.  While complicated, it appears to be the easiest way to perform an XOR operation with only AND and NOT.  There are other ways but seem to involve even more operations.  A minimum of 3 ANDs and 4 NOTs appears to be optimal, but is not guaranteed.&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Logical NAND==&lt;br /&gt;
&lt;br /&gt;
The [[logical NAND]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' if and only if both of its operands are true.  In other words, it produces a value of ''true'' if and only if at least one of its operands is false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NAND q''' (also written as '''p | q''' or '''p ↑ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NAND'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↑ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logical NOR==&lt;br /&gt;
&lt;br /&gt;
The [[logical NOR]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are false.  In other words, it produces a value of ''false'' if and only if at least one of its operands is true. ↓ is also known as the [[Peirce arrow]] after its inventor, [[Charles Peirce]], and is a [[Sole sufficient operator]].&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NOR q''' (also written as '''p ⊥ q''' or '''p ↓ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NOR'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↓ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html#Introduction%20to%20neural%20networks Neural Network Models]&lt;br /&gt;
*[http://www.facweb.iitkgp.ernet.in/~niloy/PRESENTATION/ACRI_presentation_97.ppt Cellular Automata Based Authentication]&lt;br /&gt;
*MD5 Paper&lt;br /&gt;
[http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=1762088 Stochastic model of E. coli AI-2 quorum signal circuit reveals alternative synthesis pathways] Describes a Stochastic Petri Net (SPN) model of AI-2 (Lux), provides XML code and rate constants.&lt;br /&gt;
&lt;br /&gt;
How to break MD5 and other Hash functions.. A paper written by Xiaoyun Wang and her co-authors about how to break MD5 – i.e. how to make collisions occur &lt;br /&gt;
http://www.infosec.sdu.edu.cn/uploadfile/papers/How%20to%20Break%20MD5%20and%20Other%20Hash%20Functions.pdf &lt;br /&gt;
Nostradamus attack – i.e. the bit about predicting who will become president by exploiting MD5&lt;br /&gt;
http://www.win.tue.nl/hashclash/Nostradamus/ &lt;br /&gt;
&lt;br /&gt;
The following was taken from http://www.freesoft.org/CIE/RFC/1321/4.htm &lt;br /&gt;
&lt;br /&gt;
MD5 Algorithm Description&lt;br /&gt;
We begin by supposing that we have a b-bit message as input, and that we wish to find its message digest. Here b is an arbitrary nonnegative integer; b may be zero, it need not be a multiple of eight, and it may be arbitrarily large. We imagine the bits of the message written down as follows: &lt;br /&gt;
          m_0 m_1 ... m_{b-1}&lt;br /&gt;
The following five steps are performed to compute the message digest of the message. &lt;br /&gt;
&lt;br /&gt;
Step 1. Append Padding Bits&lt;br /&gt;
The message is &amp;quot;padded&amp;quot; (extended) so that its length (in bits) is congruent to 448, modulo 512. That is, the message is extended so that it is just 64 bits shy of being a multiple of 512 bits long. Padding is always performed, even if the length of the message is already congruent to 448, modulo 512. &lt;br /&gt;
Padding is performed as follows: a single &amp;quot;1&amp;quot; bit is appended to the message, and then &amp;quot;0&amp;quot; bits are appended so that the length in bits of the padded message becomes congruent to 448, modulo 512. In all, at least one bit and at most 512 bits are appended. &lt;br /&gt;
&lt;br /&gt;
Step 2. Append Length&lt;br /&gt;
A 64-bit representation of b (the length of the message before the padding bits were added) is appended to the result of the previous step. In the unlikely event that b is greater than 2^64, then only the low-order 64 bits of b are used. (These bits are appended as two 32-bit words and appended low-order word first in accordance with the previous conventions.) &lt;br /&gt;
At this point the resulting message (after padding with bits and with b) has a length that is an exact multiple of 512 bits. Equivalently, this message has a length that is an exact multiple of 16 (32-bit) words. Let M[0 ... N-1] denote the words of the resulting message, where N is a multiple of 16. &lt;br /&gt;
&lt;br /&gt;
Step 3. Initialize MD Buffer&lt;br /&gt;
A four-word buffer (A,B,C,D) is used to compute the message digest. Here each of A, B, C, D is a 32-bit register. These registers are initialized to the following values in hexadecimal, low-order bytes first): &lt;br /&gt;
          word A: 01 23 45 67&lt;br /&gt;
          word B: 89 ab cd ef&lt;br /&gt;
          word C: fe dc ba 98&lt;br /&gt;
          word D: 76 54 32 10&lt;br /&gt;
&lt;br /&gt;
3.4 Step 4. Process Message in 16-Word Blocks&lt;br /&gt;
We first define four auxiliary functions that each take as input three 32-bit words and produce as output one 32-bit word. &lt;br /&gt;
          F(X,Y,Z) = XY v not(X) Z&lt;br /&gt;
          G(X,Y,Z) = XZ v Y not(Z)&lt;br /&gt;
          H(X,Y,Z) = X xor Y xor Z&lt;br /&gt;
          I(X,Y,Z) = Y xor (X v not(Z))&lt;br /&gt;
In each bit position F acts as a conditional: if X then Y else Z. The function F could have been defined using + instead of v since XY and not(X)Z will never have 1's in the same bit position.) It is interesting to note that if the bits of X, Y, and Z are independent and unbiased, the each bit of F(X,Y,Z) will be independent and unbiased. &lt;br /&gt;
The functions G, H, and I are similar to the function F, in that they act in &amp;quot;bitwise parallel&amp;quot; to produce their output from the bits of X, Y, and Z, in such a manner that if the corresponding bits of X, Y, and Z are independent and unbiased, then each bit of G(X,Y,Z), H(X,Y,Z), and I(X,Y,Z) will be independent and unbiased. Note that the function H is the bit-wise &amp;quot;xor&amp;quot; or &amp;quot;parity&amp;quot; function of its inputs. &lt;br /&gt;
This step uses a 64-element table T[1 ... 64] constructed from the sine function. Let T[i] denote the i-th element of the table, which is equal to the integer part of 4294967296 times abs(sin(i)), where i is in radians. The elements of the table are given in the appendix. &lt;br /&gt;
Do the following: &lt;br /&gt;
   /* Process each 16-word block. */&lt;br /&gt;
   For i = 0 to N/16-1 do&lt;br /&gt;
     /* Copy block i into X. */&lt;br /&gt;
     For j = 0 to 15 do&lt;br /&gt;
       Set X[j] to M[i*16+j].&lt;br /&gt;
     end /* of loop on j */&lt;br /&gt;
&lt;br /&gt;
     /* Save A as AA, B as BB, C as CC, and D as DD. */&lt;br /&gt;
     AA = A&lt;br /&gt;
     BB = B&lt;br /&gt;
&lt;br /&gt;
     CC = C&lt;br /&gt;
     DD = D&lt;br /&gt;
&lt;br /&gt;
     /* Round 1. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + F(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  7  1]  [DABC  1 12  2]  [CDAB  2 17  3]  [BCDA  3 22  4]&lt;br /&gt;
     [ABCD  4  7  5]  [DABC  5 12  6]  [CDAB  6 17  7]  [BCDA  7 22  8]&lt;br /&gt;
     [ABCD  8  7  9]  [DABC  9 12 10]  [CDAB 10 17 11]  [BCDA 11 22 12]&lt;br /&gt;
     [ABCD 12  7 13]  [DABC 13 12 14]  [CDAB 14 17 15]  [BCDA 15 22 16]&lt;br /&gt;
&lt;br /&gt;
     /* Round 2. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + G(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  1  5 17]  [DABC  6  9 18]  [CDAB 11 14 19]  [BCDA  0 20 20]&lt;br /&gt;
     [ABCD  5  5 21]  [DABC 10  9 22]  [CDAB 15 14 23]  [BCDA  4 20 24]&lt;br /&gt;
     [ABCD  9  5 25]  [DABC 14  9 26]  [CDAB  3 14 27]  [BCDA  8 20 28]&lt;br /&gt;
     [ABCD 13  5 29]  [DABC  2  9 30]  [CDAB  7 14 31]  [BCDA 12 20 32]&lt;br /&gt;
&lt;br /&gt;
     /* Round 3. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + H(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  5  4 33]  [DABC  8 11 34]  [CDAB 11 16 35]  [BCDA 14 23 36]&lt;br /&gt;
     [ABCD  1  4 37]  [DABC  4 11 38]  [CDAB  7 16 39]  [BCDA 10 23 40]&lt;br /&gt;
     [ABCD 13  4 41]  [DABC  0 11 42]  [CDAB  3 16 43]  [BCDA  6 23 44]&lt;br /&gt;
     [ABCD  9  4 45]  [DABC 12 11 46]  [CDAB 15 16 47]  [BCDA  2 23 48]&lt;br /&gt;
&lt;br /&gt;
     /* Round 4. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + I(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  6 49]  [DABC  7 10 50]  [CDAB 14 15 51]  [BCDA  5 21 52]&lt;br /&gt;
     [ABCD 12  6 53]  [DABC  3 10 54]  [CDAB 10 15 55]  [BCDA  1 21 56]&lt;br /&gt;
     [ABCD  8  6 57]  [DABC 15 10 58]  [CDAB  6 15 59]  [BCDA 13 21 60]&lt;br /&gt;
     [ABCD  4  6 61]  [DABC 11 10 62]  [CDAB  2 15 63]  [BCDA  9 21 64]&lt;br /&gt;
&lt;br /&gt;
     /* Then perform the following additions. (That is increment each&lt;br /&gt;
        of the four registers by the value it had before this block&lt;br /&gt;
        was started.) */&lt;br /&gt;
     A = A + AA&lt;br /&gt;
     B = B + BB&lt;br /&gt;
     C = C + CC&lt;br /&gt;
     D = D + DD&lt;br /&gt;
&lt;br /&gt;
   end /* of loop on i */&lt;br /&gt;
&lt;br /&gt;
Step 5. Output&lt;br /&gt;
The message digest produced as output is A, B, C, D. That is, we begin with the low-order byte of A, and end with the high-order byte of D. &lt;br /&gt;
This completes the description of MD5. A reference implementation in C is given in the appendix. &lt;br /&gt;
&lt;br /&gt;
Summary&lt;br /&gt;
The MD5 message-digest algorithm is simple to implement, and provides a &amp;quot;fingerprint&amp;quot; or message digest of a message of arbitrary length. It is conjectured that the difficulty of coming up with two messages having the same message digest is on the order of 2^64 operations, and that the difficulty of coming up with any message having a given message digest is on the order of 2^128 operations. The MD5 algorithm has been carefully scrutinized for weaknesses. It is, however, a relatively new algorithm and further security analysis is of course justified, as is the cas Differences Between MD4 and MD5&lt;br /&gt;
The following are the differences between MD4 and MD5: &lt;br /&gt;
1.	A fourth round has been added. &lt;br /&gt;
2.	Each step now has a unique additive constant. &lt;br /&gt;
3.	The function g in round 2 was changed from (XY v XZ v YZ) to (XZ v Y not(Z)) to make g less symmetric. &lt;br /&gt;
4.	Each step now adds in the result of the previous step. This promotes a faster &amp;quot;avalanche effect&amp;quot;. &lt;br /&gt;
5.	The order in which input words are accessed in rounds 2 and 3 is changed, to make these patterns less like each other. &lt;br /&gt;
6.	The shift amounts in each round have been approximately optimized, to yield a faster &amp;quot;avalanche effect.&amp;quot; The shifts in different rounds are distinct.&lt;br /&gt;
&lt;br /&gt;
== Engineering agar ==&lt;br /&gt;
[http://www.biotech.iastate.edu/lab_protocols/EvoAntiResBact.html A lab for showing antibiotic resistance across Amp concentration gradient]&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4952</id>
		<title>Math Modeling Pages</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4952"/>
				<updated>2008-05-29T14:27:11Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: /* Exclusive disjunction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the place for math modelers to post ideas, papers, examples and computer programs.&lt;br /&gt;
&lt;br /&gt;
Presentation on Sudoku  (Aaron and John have seen)&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.ucmo.edu/~hchen/talks/sudoku.pdf&lt;br /&gt;
&lt;br /&gt;
== Papers ==&lt;br /&gt;
[http://www.rfc-archive.org/getrfc.php?rfc=1319 MD2 Message-Digest Algorithm]&lt;br /&gt;
&lt;br /&gt;
==Logical negation==&lt;br /&gt;
&lt;br /&gt;
[[Logical negation]] is an [[logical operation|operation]] on one [[logical value]], typically the value of a [[proposition]], that produces a value of ''true'' if its operand is false and a value of ''false'' if its operand is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''NOT p''' (also written as '''~p''' or '''¬p''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:40%&amp;quot;&lt;br /&gt;
|+ '''Logical Negation'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | ¬p&lt;br /&gt;
|-&lt;br /&gt;
| F || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F&lt;br /&gt;
|}&lt;br /&gt;
==Logical conjunction==&lt;br /&gt;
&lt;br /&gt;
[[Logical conjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p AND q''' (also written as '''p ∧ q''', '''p &amp;amp; q''', or '''p&amp;lt;math&amp;gt;\cdot&amp;lt;/math&amp;gt;q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Conjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p · q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In ordinary language terms, if both ''p'' and ''q'' are true, then the conjunction ''p'' ∧ ''q'' is true.  For all other assignments of logical values to ''p'' and to ''q'' the conjunction ''p'' ∧ ''q'' is false.&lt;br /&gt;
&lt;br /&gt;
It can also be said that if ''p'', then ''p'' ∧ ''q'' is ''q'', otherwise ''p'' ∧ ''q'' is ''p''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Logical disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' [[if and only if]] both of its operands are false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p OR q''' (also written as '''p ∨ q''', '''p || q''', or '''p + q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p + q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stated in English, if ''p'', then ''p'' ∨ ''q'' is ''p'', otherwise ''p'' ∨ ''q'' is ''q''.&lt;br /&gt;
&lt;br /&gt;
==Exclusive disjunction==&lt;br /&gt;
&lt;br /&gt;
[[Exclusive disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if one but not both of its operands is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p XOR q''' (also written as '''p + q''', '''p ⊕ q''', or '''p ≠ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Exclusive Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ⊕ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For two propositions, '''XOR''' can also be written as (p = 1 ∧ q = 0)∨ (p = 0 ∧ q = 1).&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR.jpg]]&lt;br /&gt;
&lt;br /&gt;
This diagram is the biological representation to: (A'∨B')∧(A∨B)&lt;br /&gt;
&lt;br /&gt;
==Logical NAND==&lt;br /&gt;
&lt;br /&gt;
The [[logical NAND]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' if and only if both of its operands are true.  In other words, it produces a value of ''true'' if and only if at least one of its operands is false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NAND q''' (also written as '''p | q''' or '''p ↑ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NAND'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↑ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logical NOR==&lt;br /&gt;
&lt;br /&gt;
The [[logical NOR]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are false.  In other words, it produces a value of ''false'' if and only if at least one of its operands is true. ↓ is also known as the [[Peirce arrow]] after its inventor, [[Charles Peirce]], and is a [[Sole sufficient operator]].&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NOR q''' (also written as '''p ⊥ q''' or '''p ↓ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NOR'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↓ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html#Introduction%20to%20neural%20networks Neural Network Models]&lt;br /&gt;
*[http://www.facweb.iitkgp.ernet.in/~niloy/PRESENTATION/ACRI_presentation_97.ppt Cellular Automata Based Authentication]&lt;br /&gt;
*MD5 Paper&lt;br /&gt;
[http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=1762088 Stochastic model of E. coli AI-2 quorum signal circuit reveals alternative synthesis pathways] Describes a Stochastic Petri Net (SPN) model of AI-2 (Lux), provides XML code and rate constants.&lt;br /&gt;
&lt;br /&gt;
How to break MD5 and other Hash functions.. A paper written by Xiaoyun Wang and her co-authors about how to break MD5 – i.e. how to make collisions occur &lt;br /&gt;
http://www.infosec.sdu.edu.cn/uploadfile/papers/How%20to%20Break%20MD5%20and%20Other%20Hash%20Functions.pdf &lt;br /&gt;
Nostradamus attack – i.e. the bit about predicting who will become president by exploiting MD5&lt;br /&gt;
http://www.win.tue.nl/hashclash/Nostradamus/ &lt;br /&gt;
&lt;br /&gt;
The following was taken from http://www.freesoft.org/CIE/RFC/1321/4.htm &lt;br /&gt;
&lt;br /&gt;
MD5 Algorithm Description&lt;br /&gt;
We begin by supposing that we have a b-bit message as input, and that we wish to find its message digest. Here b is an arbitrary nonnegative integer; b may be zero, it need not be a multiple of eight, and it may be arbitrarily large. We imagine the bits of the message written down as follows: &lt;br /&gt;
          m_0 m_1 ... m_{b-1}&lt;br /&gt;
The following five steps are performed to compute the message digest of the message. &lt;br /&gt;
&lt;br /&gt;
Step 1. Append Padding Bits&lt;br /&gt;
The message is &amp;quot;padded&amp;quot; (extended) so that its length (in bits) is congruent to 448, modulo 512. That is, the message is extended so that it is just 64 bits shy of being a multiple of 512 bits long. Padding is always performed, even if the length of the message is already congruent to 448, modulo 512. &lt;br /&gt;
Padding is performed as follows: a single &amp;quot;1&amp;quot; bit is appended to the message, and then &amp;quot;0&amp;quot; bits are appended so that the length in bits of the padded message becomes congruent to 448, modulo 512. In all, at least one bit and at most 512 bits are appended. &lt;br /&gt;
&lt;br /&gt;
Step 2. Append Length&lt;br /&gt;
A 64-bit representation of b (the length of the message before the padding bits were added) is appended to the result of the previous step. In the unlikely event that b is greater than 2^64, then only the low-order 64 bits of b are used. (These bits are appended as two 32-bit words and appended low-order word first in accordance with the previous conventions.) &lt;br /&gt;
At this point the resulting message (after padding with bits and with b) has a length that is an exact multiple of 512 bits. Equivalently, this message has a length that is an exact multiple of 16 (32-bit) words. Let M[0 ... N-1] denote the words of the resulting message, where N is a multiple of 16. &lt;br /&gt;
&lt;br /&gt;
Step 3. Initialize MD Buffer&lt;br /&gt;
A four-word buffer (A,B,C,D) is used to compute the message digest. Here each of A, B, C, D is a 32-bit register. These registers are initialized to the following values in hexadecimal, low-order bytes first): &lt;br /&gt;
          word A: 01 23 45 67&lt;br /&gt;
          word B: 89 ab cd ef&lt;br /&gt;
          word C: fe dc ba 98&lt;br /&gt;
          word D: 76 54 32 10&lt;br /&gt;
&lt;br /&gt;
3.4 Step 4. Process Message in 16-Word Blocks&lt;br /&gt;
We first define four auxiliary functions that each take as input three 32-bit words and produce as output one 32-bit word. &lt;br /&gt;
          F(X,Y,Z) = XY v not(X) Z&lt;br /&gt;
          G(X,Y,Z) = XZ v Y not(Z)&lt;br /&gt;
          H(X,Y,Z) = X xor Y xor Z&lt;br /&gt;
          I(X,Y,Z) = Y xor (X v not(Z))&lt;br /&gt;
In each bit position F acts as a conditional: if X then Y else Z. The function F could have been defined using + instead of v since XY and not(X)Z will never have 1's in the same bit position.) It is interesting to note that if the bits of X, Y, and Z are independent and unbiased, the each bit of F(X,Y,Z) will be independent and unbiased. &lt;br /&gt;
The functions G, H, and I are similar to the function F, in that they act in &amp;quot;bitwise parallel&amp;quot; to produce their output from the bits of X, Y, and Z, in such a manner that if the corresponding bits of X, Y, and Z are independent and unbiased, then each bit of G(X,Y,Z), H(X,Y,Z), and I(X,Y,Z) will be independent and unbiased. Note that the function H is the bit-wise &amp;quot;xor&amp;quot; or &amp;quot;parity&amp;quot; function of its inputs. &lt;br /&gt;
This step uses a 64-element table T[1 ... 64] constructed from the sine function. Let T[i] denote the i-th element of the table, which is equal to the integer part of 4294967296 times abs(sin(i)), where i is in radians. The elements of the table are given in the appendix. &lt;br /&gt;
Do the following: &lt;br /&gt;
   /* Process each 16-word block. */&lt;br /&gt;
   For i = 0 to N/16-1 do&lt;br /&gt;
     /* Copy block i into X. */&lt;br /&gt;
     For j = 0 to 15 do&lt;br /&gt;
       Set X[j] to M[i*16+j].&lt;br /&gt;
     end /* of loop on j */&lt;br /&gt;
&lt;br /&gt;
     /* Save A as AA, B as BB, C as CC, and D as DD. */&lt;br /&gt;
     AA = A&lt;br /&gt;
     BB = B&lt;br /&gt;
&lt;br /&gt;
     CC = C&lt;br /&gt;
     DD = D&lt;br /&gt;
&lt;br /&gt;
     /* Round 1. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + F(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  7  1]  [DABC  1 12  2]  [CDAB  2 17  3]  [BCDA  3 22  4]&lt;br /&gt;
     [ABCD  4  7  5]  [DABC  5 12  6]  [CDAB  6 17  7]  [BCDA  7 22  8]&lt;br /&gt;
     [ABCD  8  7  9]  [DABC  9 12 10]  [CDAB 10 17 11]  [BCDA 11 22 12]&lt;br /&gt;
     [ABCD 12  7 13]  [DABC 13 12 14]  [CDAB 14 17 15]  [BCDA 15 22 16]&lt;br /&gt;
&lt;br /&gt;
     /* Round 2. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + G(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  1  5 17]  [DABC  6  9 18]  [CDAB 11 14 19]  [BCDA  0 20 20]&lt;br /&gt;
     [ABCD  5  5 21]  [DABC 10  9 22]  [CDAB 15 14 23]  [BCDA  4 20 24]&lt;br /&gt;
     [ABCD  9  5 25]  [DABC 14  9 26]  [CDAB  3 14 27]  [BCDA  8 20 28]&lt;br /&gt;
     [ABCD 13  5 29]  [DABC  2  9 30]  [CDAB  7 14 31]  [BCDA 12 20 32]&lt;br /&gt;
&lt;br /&gt;
     /* Round 3. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + H(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  5  4 33]  [DABC  8 11 34]  [CDAB 11 16 35]  [BCDA 14 23 36]&lt;br /&gt;
     [ABCD  1  4 37]  [DABC  4 11 38]  [CDAB  7 16 39]  [BCDA 10 23 40]&lt;br /&gt;
     [ABCD 13  4 41]  [DABC  0 11 42]  [CDAB  3 16 43]  [BCDA  6 23 44]&lt;br /&gt;
     [ABCD  9  4 45]  [DABC 12 11 46]  [CDAB 15 16 47]  [BCDA  2 23 48]&lt;br /&gt;
&lt;br /&gt;
     /* Round 4. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + I(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  6 49]  [DABC  7 10 50]  [CDAB 14 15 51]  [BCDA  5 21 52]&lt;br /&gt;
     [ABCD 12  6 53]  [DABC  3 10 54]  [CDAB 10 15 55]  [BCDA  1 21 56]&lt;br /&gt;
     [ABCD  8  6 57]  [DABC 15 10 58]  [CDAB  6 15 59]  [BCDA 13 21 60]&lt;br /&gt;
     [ABCD  4  6 61]  [DABC 11 10 62]  [CDAB  2 15 63]  [BCDA  9 21 64]&lt;br /&gt;
&lt;br /&gt;
     /* Then perform the following additions. (That is increment each&lt;br /&gt;
        of the four registers by the value it had before this block&lt;br /&gt;
        was started.) */&lt;br /&gt;
     A = A + AA&lt;br /&gt;
     B = B + BB&lt;br /&gt;
     C = C + CC&lt;br /&gt;
     D = D + DD&lt;br /&gt;
&lt;br /&gt;
   end /* of loop on i */&lt;br /&gt;
&lt;br /&gt;
Step 5. Output&lt;br /&gt;
The message digest produced as output is A, B, C, D. That is, we begin with the low-order byte of A, and end with the high-order byte of D. &lt;br /&gt;
This completes the description of MD5. A reference implementation in C is given in the appendix. &lt;br /&gt;
&lt;br /&gt;
Summary&lt;br /&gt;
The MD5 message-digest algorithm is simple to implement, and provides a &amp;quot;fingerprint&amp;quot; or message digest of a message of arbitrary length. It is conjectured that the difficulty of coming up with two messages having the same message digest is on the order of 2^64 operations, and that the difficulty of coming up with any message having a given message digest is on the order of 2^128 operations. The MD5 algorithm has been carefully scrutinized for weaknesses. It is, however, a relatively new algorithm and further security analysis is of course justified, as is the cas Differences Between MD4 and MD5&lt;br /&gt;
The following are the differences between MD4 and MD5: &lt;br /&gt;
1.	A fourth round has been added. &lt;br /&gt;
2.	Each step now has a unique additive constant. &lt;br /&gt;
3.	The function g in round 2 was changed from (XY v XZ v YZ) to (XZ v Y not(Z)) to make g less symmetric. &lt;br /&gt;
4.	Each step now adds in the result of the previous step. This promotes a faster &amp;quot;avalanche effect&amp;quot;. &lt;br /&gt;
5.	The order in which input words are accessed in rounds 2 and 3 is changed, to make these patterns less like each other. &lt;br /&gt;
6.	The shift amounts in each round have been approximately optimized, to yield a faster &amp;quot;avalanche effect.&amp;quot; The shifts in different rounds are distinct.&lt;br /&gt;
&lt;br /&gt;
== Engineering agar ==&lt;br /&gt;
[http://www.biotech.iastate.edu/lab_protocols/EvoAntiResBact.html A lab for showing antibiotic resistance across Amp concentration gradient]&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4951</id>
		<title>Math Modeling Pages</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4951"/>
				<updated>2008-05-29T14:26:36Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: /* Exclusive disjunction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the place for math modelers to post ideas, papers, examples and computer programs.&lt;br /&gt;
&lt;br /&gt;
Presentation on Sudoku  (Aaron and John have seen)&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.ucmo.edu/~hchen/talks/sudoku.pdf&lt;br /&gt;
&lt;br /&gt;
== Papers ==&lt;br /&gt;
[http://www.rfc-archive.org/getrfc.php?rfc=1319 MD2 Message-Digest Algorithm]&lt;br /&gt;
&lt;br /&gt;
==Logical negation==&lt;br /&gt;
&lt;br /&gt;
[[Logical negation]] is an [[logical operation|operation]] on one [[logical value]], typically the value of a [[proposition]], that produces a value of ''true'' if its operand is false and a value of ''false'' if its operand is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''NOT p''' (also written as '''~p''' or '''¬p''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:40%&amp;quot;&lt;br /&gt;
|+ '''Logical Negation'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | ¬p&lt;br /&gt;
|-&lt;br /&gt;
| F || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F&lt;br /&gt;
|}&lt;br /&gt;
==Logical conjunction==&lt;br /&gt;
&lt;br /&gt;
[[Logical conjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p AND q''' (also written as '''p ∧ q''', '''p &amp;amp; q''', or '''p&amp;lt;math&amp;gt;\cdot&amp;lt;/math&amp;gt;q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Conjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p · q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In ordinary language terms, if both ''p'' and ''q'' are true, then the conjunction ''p'' ∧ ''q'' is true.  For all other assignments of logical values to ''p'' and to ''q'' the conjunction ''p'' ∧ ''q'' is false.&lt;br /&gt;
&lt;br /&gt;
It can also be said that if ''p'', then ''p'' ∧ ''q'' is ''q'', otherwise ''p'' ∧ ''q'' is ''p''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Logical disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' [[if and only if]] both of its operands are false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p OR q''' (also written as '''p ∨ q''', '''p || q''', or '''p + q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p + q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stated in English, if ''p'', then ''p'' ∨ ''q'' is ''p'', otherwise ''p'' ∨ ''q'' is ''q''.&lt;br /&gt;
&lt;br /&gt;
==Exclusive disjunction==&lt;br /&gt;
&lt;br /&gt;
[[Exclusive disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if one but not both of its operands is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p XOR q''' (also written as '''p + q''', '''p ⊕ q''', or '''p ≠ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Exclusive Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ⊕ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For two propositions, '''XOR''' can also be written as (p = 1 ∧ q = 0)∨ (p = 0 ∧ q = 1).&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR.jpg]]&lt;br /&gt;
This diagram is the biological representation to: (A'∨B')∧(A∨B)&lt;br /&gt;
&lt;br /&gt;
==Logical NAND==&lt;br /&gt;
&lt;br /&gt;
The [[logical NAND]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' if and only if both of its operands are true.  In other words, it produces a value of ''true'' if and only if at least one of its operands is false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NAND q''' (also written as '''p | q''' or '''p ↑ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NAND'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↑ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logical NOR==&lt;br /&gt;
&lt;br /&gt;
The [[logical NOR]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are false.  In other words, it produces a value of ''false'' if and only if at least one of its operands is true. ↓ is also known as the [[Peirce arrow]] after its inventor, [[Charles Peirce]], and is a [[Sole sufficient operator]].&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NOR q''' (also written as '''p ⊥ q''' or '''p ↓ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NOR'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↓ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html#Introduction%20to%20neural%20networks Neural Network Models]&lt;br /&gt;
*[http://www.facweb.iitkgp.ernet.in/~niloy/PRESENTATION/ACRI_presentation_97.ppt Cellular Automata Based Authentication]&lt;br /&gt;
*MD5 Paper&lt;br /&gt;
[http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=1762088 Stochastic model of E. coli AI-2 quorum signal circuit reveals alternative synthesis pathways] Describes a Stochastic Petri Net (SPN) model of AI-2 (Lux), provides XML code and rate constants.&lt;br /&gt;
&lt;br /&gt;
How to break MD5 and other Hash functions.. A paper written by Xiaoyun Wang and her co-authors about how to break MD5 – i.e. how to make collisions occur &lt;br /&gt;
http://www.infosec.sdu.edu.cn/uploadfile/papers/How%20to%20Break%20MD5%20and%20Other%20Hash%20Functions.pdf &lt;br /&gt;
Nostradamus attack – i.e. the bit about predicting who will become president by exploiting MD5&lt;br /&gt;
http://www.win.tue.nl/hashclash/Nostradamus/ &lt;br /&gt;
&lt;br /&gt;
The following was taken from http://www.freesoft.org/CIE/RFC/1321/4.htm &lt;br /&gt;
&lt;br /&gt;
MD5 Algorithm Description&lt;br /&gt;
We begin by supposing that we have a b-bit message as input, and that we wish to find its message digest. Here b is an arbitrary nonnegative integer; b may be zero, it need not be a multiple of eight, and it may be arbitrarily large. We imagine the bits of the message written down as follows: &lt;br /&gt;
          m_0 m_1 ... m_{b-1}&lt;br /&gt;
The following five steps are performed to compute the message digest of the message. &lt;br /&gt;
&lt;br /&gt;
Step 1. Append Padding Bits&lt;br /&gt;
The message is &amp;quot;padded&amp;quot; (extended) so that its length (in bits) is congruent to 448, modulo 512. That is, the message is extended so that it is just 64 bits shy of being a multiple of 512 bits long. Padding is always performed, even if the length of the message is already congruent to 448, modulo 512. &lt;br /&gt;
Padding is performed as follows: a single &amp;quot;1&amp;quot; bit is appended to the message, and then &amp;quot;0&amp;quot; bits are appended so that the length in bits of the padded message becomes congruent to 448, modulo 512. In all, at least one bit and at most 512 bits are appended. &lt;br /&gt;
&lt;br /&gt;
Step 2. Append Length&lt;br /&gt;
A 64-bit representation of b (the length of the message before the padding bits were added) is appended to the result of the previous step. In the unlikely event that b is greater than 2^64, then only the low-order 64 bits of b are used. (These bits are appended as two 32-bit words and appended low-order word first in accordance with the previous conventions.) &lt;br /&gt;
At this point the resulting message (after padding with bits and with b) has a length that is an exact multiple of 512 bits. Equivalently, this message has a length that is an exact multiple of 16 (32-bit) words. Let M[0 ... N-1] denote the words of the resulting message, where N is a multiple of 16. &lt;br /&gt;
&lt;br /&gt;
Step 3. Initialize MD Buffer&lt;br /&gt;
A four-word buffer (A,B,C,D) is used to compute the message digest. Here each of A, B, C, D is a 32-bit register. These registers are initialized to the following values in hexadecimal, low-order bytes first): &lt;br /&gt;
          word A: 01 23 45 67&lt;br /&gt;
          word B: 89 ab cd ef&lt;br /&gt;
          word C: fe dc ba 98&lt;br /&gt;
          word D: 76 54 32 10&lt;br /&gt;
&lt;br /&gt;
3.4 Step 4. Process Message in 16-Word Blocks&lt;br /&gt;
We first define four auxiliary functions that each take as input three 32-bit words and produce as output one 32-bit word. &lt;br /&gt;
          F(X,Y,Z) = XY v not(X) Z&lt;br /&gt;
          G(X,Y,Z) = XZ v Y not(Z)&lt;br /&gt;
          H(X,Y,Z) = X xor Y xor Z&lt;br /&gt;
          I(X,Y,Z) = Y xor (X v not(Z))&lt;br /&gt;
In each bit position F acts as a conditional: if X then Y else Z. The function F could have been defined using + instead of v since XY and not(X)Z will never have 1's in the same bit position.) It is interesting to note that if the bits of X, Y, and Z are independent and unbiased, the each bit of F(X,Y,Z) will be independent and unbiased. &lt;br /&gt;
The functions G, H, and I are similar to the function F, in that they act in &amp;quot;bitwise parallel&amp;quot; to produce their output from the bits of X, Y, and Z, in such a manner that if the corresponding bits of X, Y, and Z are independent and unbiased, then each bit of G(X,Y,Z), H(X,Y,Z), and I(X,Y,Z) will be independent and unbiased. Note that the function H is the bit-wise &amp;quot;xor&amp;quot; or &amp;quot;parity&amp;quot; function of its inputs. &lt;br /&gt;
This step uses a 64-element table T[1 ... 64] constructed from the sine function. Let T[i] denote the i-th element of the table, which is equal to the integer part of 4294967296 times abs(sin(i)), where i is in radians. The elements of the table are given in the appendix. &lt;br /&gt;
Do the following: &lt;br /&gt;
   /* Process each 16-word block. */&lt;br /&gt;
   For i = 0 to N/16-1 do&lt;br /&gt;
     /* Copy block i into X. */&lt;br /&gt;
     For j = 0 to 15 do&lt;br /&gt;
       Set X[j] to M[i*16+j].&lt;br /&gt;
     end /* of loop on j */&lt;br /&gt;
&lt;br /&gt;
     /* Save A as AA, B as BB, C as CC, and D as DD. */&lt;br /&gt;
     AA = A&lt;br /&gt;
     BB = B&lt;br /&gt;
&lt;br /&gt;
     CC = C&lt;br /&gt;
     DD = D&lt;br /&gt;
&lt;br /&gt;
     /* Round 1. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + F(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  7  1]  [DABC  1 12  2]  [CDAB  2 17  3]  [BCDA  3 22  4]&lt;br /&gt;
     [ABCD  4  7  5]  [DABC  5 12  6]  [CDAB  6 17  7]  [BCDA  7 22  8]&lt;br /&gt;
     [ABCD  8  7  9]  [DABC  9 12 10]  [CDAB 10 17 11]  [BCDA 11 22 12]&lt;br /&gt;
     [ABCD 12  7 13]  [DABC 13 12 14]  [CDAB 14 17 15]  [BCDA 15 22 16]&lt;br /&gt;
&lt;br /&gt;
     /* Round 2. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + G(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  1  5 17]  [DABC  6  9 18]  [CDAB 11 14 19]  [BCDA  0 20 20]&lt;br /&gt;
     [ABCD  5  5 21]  [DABC 10  9 22]  [CDAB 15 14 23]  [BCDA  4 20 24]&lt;br /&gt;
     [ABCD  9  5 25]  [DABC 14  9 26]  [CDAB  3 14 27]  [BCDA  8 20 28]&lt;br /&gt;
     [ABCD 13  5 29]  [DABC  2  9 30]  [CDAB  7 14 31]  [BCDA 12 20 32]&lt;br /&gt;
&lt;br /&gt;
     /* Round 3. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + H(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  5  4 33]  [DABC  8 11 34]  [CDAB 11 16 35]  [BCDA 14 23 36]&lt;br /&gt;
     [ABCD  1  4 37]  [DABC  4 11 38]  [CDAB  7 16 39]  [BCDA 10 23 40]&lt;br /&gt;
     [ABCD 13  4 41]  [DABC  0 11 42]  [CDAB  3 16 43]  [BCDA  6 23 44]&lt;br /&gt;
     [ABCD  9  4 45]  [DABC 12 11 46]  [CDAB 15 16 47]  [BCDA  2 23 48]&lt;br /&gt;
&lt;br /&gt;
     /* Round 4. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + I(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  6 49]  [DABC  7 10 50]  [CDAB 14 15 51]  [BCDA  5 21 52]&lt;br /&gt;
     [ABCD 12  6 53]  [DABC  3 10 54]  [CDAB 10 15 55]  [BCDA  1 21 56]&lt;br /&gt;
     [ABCD  8  6 57]  [DABC 15 10 58]  [CDAB  6 15 59]  [BCDA 13 21 60]&lt;br /&gt;
     [ABCD  4  6 61]  [DABC 11 10 62]  [CDAB  2 15 63]  [BCDA  9 21 64]&lt;br /&gt;
&lt;br /&gt;
     /* Then perform the following additions. (That is increment each&lt;br /&gt;
        of the four registers by the value it had before this block&lt;br /&gt;
        was started.) */&lt;br /&gt;
     A = A + AA&lt;br /&gt;
     B = B + BB&lt;br /&gt;
     C = C + CC&lt;br /&gt;
     D = D + DD&lt;br /&gt;
&lt;br /&gt;
   end /* of loop on i */&lt;br /&gt;
&lt;br /&gt;
Step 5. Output&lt;br /&gt;
The message digest produced as output is A, B, C, D. That is, we begin with the low-order byte of A, and end with the high-order byte of D. &lt;br /&gt;
This completes the description of MD5. A reference implementation in C is given in the appendix. &lt;br /&gt;
&lt;br /&gt;
Summary&lt;br /&gt;
The MD5 message-digest algorithm is simple to implement, and provides a &amp;quot;fingerprint&amp;quot; or message digest of a message of arbitrary length. It is conjectured that the difficulty of coming up with two messages having the same message digest is on the order of 2^64 operations, and that the difficulty of coming up with any message having a given message digest is on the order of 2^128 operations. The MD5 algorithm has been carefully scrutinized for weaknesses. It is, however, a relatively new algorithm and further security analysis is of course justified, as is the cas Differences Between MD4 and MD5&lt;br /&gt;
The following are the differences between MD4 and MD5: &lt;br /&gt;
1.	A fourth round has been added. &lt;br /&gt;
2.	Each step now has a unique additive constant. &lt;br /&gt;
3.	The function g in round 2 was changed from (XY v XZ v YZ) to (XZ v Y not(Z)) to make g less symmetric. &lt;br /&gt;
4.	Each step now adds in the result of the previous step. This promotes a faster &amp;quot;avalanche effect&amp;quot;. &lt;br /&gt;
5.	The order in which input words are accessed in rounds 2 and 3 is changed, to make these patterns less like each other. &lt;br /&gt;
6.	The shift amounts in each round have been approximately optimized, to yield a faster &amp;quot;avalanche effect.&amp;quot; The shifts in different rounds are distinct.&lt;br /&gt;
&lt;br /&gt;
== Engineering agar ==&lt;br /&gt;
[http://www.biotech.iastate.edu/lab_protocols/EvoAntiResBact.html A lab for showing antibiotic resistance across Amp concentration gradient]&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4950</id>
		<title>Math Modeling Pages</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4950"/>
				<updated>2008-05-29T14:23:55Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: /* Exclusive disjunction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the place for math modelers to post ideas, papers, examples and computer programs.&lt;br /&gt;
&lt;br /&gt;
Presentation on Sudoku  (Aaron and John have seen)&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.ucmo.edu/~hchen/talks/sudoku.pdf&lt;br /&gt;
&lt;br /&gt;
== Papers ==&lt;br /&gt;
[http://www.rfc-archive.org/getrfc.php?rfc=1319 MD2 Message-Digest Algorithm]&lt;br /&gt;
&lt;br /&gt;
==Logical negation==&lt;br /&gt;
&lt;br /&gt;
[[Logical negation]] is an [[logical operation|operation]] on one [[logical value]], typically the value of a [[proposition]], that produces a value of ''true'' if its operand is false and a value of ''false'' if its operand is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''NOT p''' (also written as '''~p''' or '''¬p''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:40%&amp;quot;&lt;br /&gt;
|+ '''Logical Negation'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | ¬p&lt;br /&gt;
|-&lt;br /&gt;
| F || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F&lt;br /&gt;
|}&lt;br /&gt;
==Logical conjunction==&lt;br /&gt;
&lt;br /&gt;
[[Logical conjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p AND q''' (also written as '''p ∧ q''', '''p &amp;amp; q''', or '''p&amp;lt;math&amp;gt;\cdot&amp;lt;/math&amp;gt;q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Conjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p · q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In ordinary language terms, if both ''p'' and ''q'' are true, then the conjunction ''p'' ∧ ''q'' is true.  For all other assignments of logical values to ''p'' and to ''q'' the conjunction ''p'' ∧ ''q'' is false.&lt;br /&gt;
&lt;br /&gt;
It can also be said that if ''p'', then ''p'' ∧ ''q'' is ''q'', otherwise ''p'' ∧ ''q'' is ''p''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Logical disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' [[if and only if]] both of its operands are false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p OR q''' (also written as '''p ∨ q''', '''p || q''', or '''p + q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p + q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stated in English, if ''p'', then ''p'' ∨ ''q'' is ''p'', otherwise ''p'' ∨ ''q'' is ''q''.&lt;br /&gt;
&lt;br /&gt;
==Exclusive disjunction==&lt;br /&gt;
&lt;br /&gt;
[[Exclusive disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if one but not both of its operands is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p XOR q''' (also written as '''p + q''', '''p ⊕ q''', or '''p ≠ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Exclusive Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ⊕ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For two propositions, '''XOR''' can also be written as (p = 1 ∧ q = 0)∨ (p = 0 ∧ q = 1).&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Logical NAND==&lt;br /&gt;
&lt;br /&gt;
The [[logical NAND]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' if and only if both of its operands are true.  In other words, it produces a value of ''true'' if and only if at least one of its operands is false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NAND q''' (also written as '''p | q''' or '''p ↑ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NAND'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↑ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logical NOR==&lt;br /&gt;
&lt;br /&gt;
The [[logical NOR]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are false.  In other words, it produces a value of ''false'' if and only if at least one of its operands is true. ↓ is also known as the [[Peirce arrow]] after its inventor, [[Charles Peirce]], and is a [[Sole sufficient operator]].&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NOR q''' (also written as '''p ⊥ q''' or '''p ↓ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NOR'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↓ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html#Introduction%20to%20neural%20networks Neural Network Models]&lt;br /&gt;
*[http://www.facweb.iitkgp.ernet.in/~niloy/PRESENTATION/ACRI_presentation_97.ppt Cellular Automata Based Authentication]&lt;br /&gt;
*MD5 Paper&lt;br /&gt;
[http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=1762088 Stochastic model of E. coli AI-2 quorum signal circuit reveals alternative synthesis pathways] Describes a Stochastic Petri Net (SPN) model of AI-2 (Lux), provides XML code and rate constants.&lt;br /&gt;
&lt;br /&gt;
How to break MD5 and other Hash functions.. A paper written by Xiaoyun Wang and her co-authors about how to break MD5 – i.e. how to make collisions occur &lt;br /&gt;
http://www.infosec.sdu.edu.cn/uploadfile/papers/How%20to%20Break%20MD5%20and%20Other%20Hash%20Functions.pdf &lt;br /&gt;
Nostradamus attack – i.e. the bit about predicting who will become president by exploiting MD5&lt;br /&gt;
http://www.win.tue.nl/hashclash/Nostradamus/ &lt;br /&gt;
&lt;br /&gt;
The following was taken from http://www.freesoft.org/CIE/RFC/1321/4.htm &lt;br /&gt;
&lt;br /&gt;
MD5 Algorithm Description&lt;br /&gt;
We begin by supposing that we have a b-bit message as input, and that we wish to find its message digest. Here b is an arbitrary nonnegative integer; b may be zero, it need not be a multiple of eight, and it may be arbitrarily large. We imagine the bits of the message written down as follows: &lt;br /&gt;
          m_0 m_1 ... m_{b-1}&lt;br /&gt;
The following five steps are performed to compute the message digest of the message. &lt;br /&gt;
&lt;br /&gt;
Step 1. Append Padding Bits&lt;br /&gt;
The message is &amp;quot;padded&amp;quot; (extended) so that its length (in bits) is congruent to 448, modulo 512. That is, the message is extended so that it is just 64 bits shy of being a multiple of 512 bits long. Padding is always performed, even if the length of the message is already congruent to 448, modulo 512. &lt;br /&gt;
Padding is performed as follows: a single &amp;quot;1&amp;quot; bit is appended to the message, and then &amp;quot;0&amp;quot; bits are appended so that the length in bits of the padded message becomes congruent to 448, modulo 512. In all, at least one bit and at most 512 bits are appended. &lt;br /&gt;
&lt;br /&gt;
Step 2. Append Length&lt;br /&gt;
A 64-bit representation of b (the length of the message before the padding bits were added) is appended to the result of the previous step. In the unlikely event that b is greater than 2^64, then only the low-order 64 bits of b are used. (These bits are appended as two 32-bit words and appended low-order word first in accordance with the previous conventions.) &lt;br /&gt;
At this point the resulting message (after padding with bits and with b) has a length that is an exact multiple of 512 bits. Equivalently, this message has a length that is an exact multiple of 16 (32-bit) words. Let M[0 ... N-1] denote the words of the resulting message, where N is a multiple of 16. &lt;br /&gt;
&lt;br /&gt;
Step 3. Initialize MD Buffer&lt;br /&gt;
A four-word buffer (A,B,C,D) is used to compute the message digest. Here each of A, B, C, D is a 32-bit register. These registers are initialized to the following values in hexadecimal, low-order bytes first): &lt;br /&gt;
          word A: 01 23 45 67&lt;br /&gt;
          word B: 89 ab cd ef&lt;br /&gt;
          word C: fe dc ba 98&lt;br /&gt;
          word D: 76 54 32 10&lt;br /&gt;
&lt;br /&gt;
3.4 Step 4. Process Message in 16-Word Blocks&lt;br /&gt;
We first define four auxiliary functions that each take as input three 32-bit words and produce as output one 32-bit word. &lt;br /&gt;
          F(X,Y,Z) = XY v not(X) Z&lt;br /&gt;
          G(X,Y,Z) = XZ v Y not(Z)&lt;br /&gt;
          H(X,Y,Z) = X xor Y xor Z&lt;br /&gt;
          I(X,Y,Z) = Y xor (X v not(Z))&lt;br /&gt;
In each bit position F acts as a conditional: if X then Y else Z. The function F could have been defined using + instead of v since XY and not(X)Z will never have 1's in the same bit position.) It is interesting to note that if the bits of X, Y, and Z are independent and unbiased, the each bit of F(X,Y,Z) will be independent and unbiased. &lt;br /&gt;
The functions G, H, and I are similar to the function F, in that they act in &amp;quot;bitwise parallel&amp;quot; to produce their output from the bits of X, Y, and Z, in such a manner that if the corresponding bits of X, Y, and Z are independent and unbiased, then each bit of G(X,Y,Z), H(X,Y,Z), and I(X,Y,Z) will be independent and unbiased. Note that the function H is the bit-wise &amp;quot;xor&amp;quot; or &amp;quot;parity&amp;quot; function of its inputs. &lt;br /&gt;
This step uses a 64-element table T[1 ... 64] constructed from the sine function. Let T[i] denote the i-th element of the table, which is equal to the integer part of 4294967296 times abs(sin(i)), where i is in radians. The elements of the table are given in the appendix. &lt;br /&gt;
Do the following: &lt;br /&gt;
   /* Process each 16-word block. */&lt;br /&gt;
   For i = 0 to N/16-1 do&lt;br /&gt;
     /* Copy block i into X. */&lt;br /&gt;
     For j = 0 to 15 do&lt;br /&gt;
       Set X[j] to M[i*16+j].&lt;br /&gt;
     end /* of loop on j */&lt;br /&gt;
&lt;br /&gt;
     /* Save A as AA, B as BB, C as CC, and D as DD. */&lt;br /&gt;
     AA = A&lt;br /&gt;
     BB = B&lt;br /&gt;
&lt;br /&gt;
     CC = C&lt;br /&gt;
     DD = D&lt;br /&gt;
&lt;br /&gt;
     /* Round 1. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + F(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  7  1]  [DABC  1 12  2]  [CDAB  2 17  3]  [BCDA  3 22  4]&lt;br /&gt;
     [ABCD  4  7  5]  [DABC  5 12  6]  [CDAB  6 17  7]  [BCDA  7 22  8]&lt;br /&gt;
     [ABCD  8  7  9]  [DABC  9 12 10]  [CDAB 10 17 11]  [BCDA 11 22 12]&lt;br /&gt;
     [ABCD 12  7 13]  [DABC 13 12 14]  [CDAB 14 17 15]  [BCDA 15 22 16]&lt;br /&gt;
&lt;br /&gt;
     /* Round 2. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + G(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  1  5 17]  [DABC  6  9 18]  [CDAB 11 14 19]  [BCDA  0 20 20]&lt;br /&gt;
     [ABCD  5  5 21]  [DABC 10  9 22]  [CDAB 15 14 23]  [BCDA  4 20 24]&lt;br /&gt;
     [ABCD  9  5 25]  [DABC 14  9 26]  [CDAB  3 14 27]  [BCDA  8 20 28]&lt;br /&gt;
     [ABCD 13  5 29]  [DABC  2  9 30]  [CDAB  7 14 31]  [BCDA 12 20 32]&lt;br /&gt;
&lt;br /&gt;
     /* Round 3. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + H(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  5  4 33]  [DABC  8 11 34]  [CDAB 11 16 35]  [BCDA 14 23 36]&lt;br /&gt;
     [ABCD  1  4 37]  [DABC  4 11 38]  [CDAB  7 16 39]  [BCDA 10 23 40]&lt;br /&gt;
     [ABCD 13  4 41]  [DABC  0 11 42]  [CDAB  3 16 43]  [BCDA  6 23 44]&lt;br /&gt;
     [ABCD  9  4 45]  [DABC 12 11 46]  [CDAB 15 16 47]  [BCDA  2 23 48]&lt;br /&gt;
&lt;br /&gt;
     /* Round 4. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + I(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  6 49]  [DABC  7 10 50]  [CDAB 14 15 51]  [BCDA  5 21 52]&lt;br /&gt;
     [ABCD 12  6 53]  [DABC  3 10 54]  [CDAB 10 15 55]  [BCDA  1 21 56]&lt;br /&gt;
     [ABCD  8  6 57]  [DABC 15 10 58]  [CDAB  6 15 59]  [BCDA 13 21 60]&lt;br /&gt;
     [ABCD  4  6 61]  [DABC 11 10 62]  [CDAB  2 15 63]  [BCDA  9 21 64]&lt;br /&gt;
&lt;br /&gt;
     /* Then perform the following additions. (That is increment each&lt;br /&gt;
        of the four registers by the value it had before this block&lt;br /&gt;
        was started.) */&lt;br /&gt;
     A = A + AA&lt;br /&gt;
     B = B + BB&lt;br /&gt;
     C = C + CC&lt;br /&gt;
     D = D + DD&lt;br /&gt;
&lt;br /&gt;
   end /* of loop on i */&lt;br /&gt;
&lt;br /&gt;
Step 5. Output&lt;br /&gt;
The message digest produced as output is A, B, C, D. That is, we begin with the low-order byte of A, and end with the high-order byte of D. &lt;br /&gt;
This completes the description of MD5. A reference implementation in C is given in the appendix. &lt;br /&gt;
&lt;br /&gt;
Summary&lt;br /&gt;
The MD5 message-digest algorithm is simple to implement, and provides a &amp;quot;fingerprint&amp;quot; or message digest of a message of arbitrary length. It is conjectured that the difficulty of coming up with two messages having the same message digest is on the order of 2^64 operations, and that the difficulty of coming up with any message having a given message digest is on the order of 2^128 operations. The MD5 algorithm has been carefully scrutinized for weaknesses. It is, however, a relatively new algorithm and further security analysis is of course justified, as is the cas Differences Between MD4 and MD5&lt;br /&gt;
The following are the differences between MD4 and MD5: &lt;br /&gt;
1.	A fourth round has been added. &lt;br /&gt;
2.	Each step now has a unique additive constant. &lt;br /&gt;
3.	The function g in round 2 was changed from (XY v XZ v YZ) to (XZ v Y not(Z)) to make g less symmetric. &lt;br /&gt;
4.	Each step now adds in the result of the previous step. This promotes a faster &amp;quot;avalanche effect&amp;quot;. &lt;br /&gt;
5.	The order in which input words are accessed in rounds 2 and 3 is changed, to make these patterns less like each other. &lt;br /&gt;
6.	The shift amounts in each round have been approximately optimized, to yield a faster &amp;quot;avalanche effect.&amp;quot; The shifts in different rounds are distinct.&lt;br /&gt;
&lt;br /&gt;
== Engineering agar ==&lt;br /&gt;
[http://www.biotech.iastate.edu/lab_protocols/EvoAntiResBact.html A lab for showing antibiotic resistance across Amp concentration gradient]&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR.jpg&amp;diff=4949</id>
		<title>File:XOR.jpg</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR.jpg&amp;diff=4949"/>
				<updated>2008-05-29T14:22:46Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR2.jpg&amp;diff=4948</id>
		<title>File:XOR2.jpg</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR2.jpg&amp;diff=4948"/>
				<updated>2008-05-29T14:20:29Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR1.jpg&amp;diff=4945</id>
		<title>File:XOR1.jpg</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=File:XOR1.jpg&amp;diff=4945"/>
				<updated>2008-05-29T14:00:55Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4944</id>
		<title>Math Modeling Pages</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4944"/>
				<updated>2008-05-29T14:00:34Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: /* Exclusive disjunction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the place for math modelers to post ideas, papers, examples and computer programs.&lt;br /&gt;
&lt;br /&gt;
Presentation on Sudoku  (Aaron and John have seen)&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.ucmo.edu/~hchen/talks/sudoku.pdf&lt;br /&gt;
&lt;br /&gt;
== Papers ==&lt;br /&gt;
[http://www.rfc-archive.org/getrfc.php?rfc=1319 MD2 Message-Digest Algorithm]&lt;br /&gt;
&lt;br /&gt;
==Logical negation==&lt;br /&gt;
&lt;br /&gt;
[[Logical negation]] is an [[logical operation|operation]] on one [[logical value]], typically the value of a [[proposition]], that produces a value of ''true'' if its operand is false and a value of ''false'' if its operand is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''NOT p''' (also written as '''~p''' or '''¬p''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:40%&amp;quot;&lt;br /&gt;
|+ '''Logical Negation'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | ¬p&lt;br /&gt;
|-&lt;br /&gt;
| F || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F&lt;br /&gt;
|}&lt;br /&gt;
==Logical conjunction==&lt;br /&gt;
&lt;br /&gt;
[[Logical conjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p AND q''' (also written as '''p ∧ q''', '''p &amp;amp; q''', or '''p&amp;lt;math&amp;gt;\cdot&amp;lt;/math&amp;gt;q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Conjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p · q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In ordinary language terms, if both ''p'' and ''q'' are true, then the conjunction ''p'' ∧ ''q'' is true.  For all other assignments of logical values to ''p'' and to ''q'' the conjunction ''p'' ∧ ''q'' is false.&lt;br /&gt;
&lt;br /&gt;
It can also be said that if ''p'', then ''p'' ∧ ''q'' is ''q'', otherwise ''p'' ∧ ''q'' is ''p''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Logical disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' [[if and only if]] both of its operands are false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p OR q''' (also written as '''p ∨ q''', '''p || q''', or '''p + q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p + q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || T&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stated in English, if ''p'', then ''p'' ∨ ''q'' is ''p'', otherwise ''p'' ∨ ''q'' is ''q''.&lt;br /&gt;
&lt;br /&gt;
==Exclusive disjunction==&lt;br /&gt;
&lt;br /&gt;
[[Exclusive disjunction]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if one but not both of its operands is true.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p XOR q''' (also written as '''p + q''', '''p ⊕ q''', or '''p ≠ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Exclusive Disjunction'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ⊕ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || F&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For two propositions, '''XOR''' can also be written as (p = 1 ∧ q = 0)∨ (p = 0 ∧ q = 1).&lt;br /&gt;
&lt;br /&gt;
[[Image:XOR1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Logical NAND==&lt;br /&gt;
&lt;br /&gt;
The [[logical NAND]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''false'' if and only if both of its operands are true.  In other words, it produces a value of ''true'' if and only if at least one of its operands is false.&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NAND q''' (also written as '''p | q''' or '''p ↑ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NAND'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↑ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || T&lt;br /&gt;
|-&lt;br /&gt;
| F || T || T&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logical NOR==&lt;br /&gt;
&lt;br /&gt;
The [[logical NOR]] is an [[logical operation|operation]] on two [[logical value]]s, typically the values of two [[proposition]]s, that produces a value of ''true'' if and only if both of its operands are false.  In other words, it produces a value of ''false'' if and only if at least one of its operands is true. ↓ is also known as the [[Peirce arrow]] after its inventor, [[Charles Peirce]], and is a [[Sole sufficient operator]].&lt;br /&gt;
&lt;br /&gt;
The truth table for '''p NOR q''' (also written as '''p ⊥ q''' or '''p ↓ q''') is as follows:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background:lightcyan; font-weight:bold; text-align:center; width:45%&amp;quot;&lt;br /&gt;
|+ '''Logical NOR'''&lt;br /&gt;
|- style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | q&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | p ↓ q&lt;br /&gt;
|-&lt;br /&gt;
| T || T || F&lt;br /&gt;
|-&lt;br /&gt;
| T || F || F&lt;br /&gt;
|-&lt;br /&gt;
| F || T || F&lt;br /&gt;
|-&lt;br /&gt;
| F || F || T&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html#Introduction%20to%20neural%20networks Neural Network Models]&lt;br /&gt;
*[http://www.facweb.iitkgp.ernet.in/~niloy/PRESENTATION/ACRI_presentation_97.ppt Cellular Automata Based Authentication]&lt;br /&gt;
*MD5 Paper&lt;br /&gt;
[http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=1762088 Stochastic model of E. coli AI-2 quorum signal circuit reveals alternative synthesis pathways] Describes a Stochastic Petri Net (SPN) model of AI-2 (Lux), provides XML code and rate constants.&lt;br /&gt;
&lt;br /&gt;
How to break MD5 and other Hash functions.. A paper written by Xiaoyun Wang and her co-authors about how to break MD5 – i.e. how to make collisions occur &lt;br /&gt;
http://www.infosec.sdu.edu.cn/uploadfile/papers/How%20to%20Break%20MD5%20and%20Other%20Hash%20Functions.pdf &lt;br /&gt;
Nostradamus attack – i.e. the bit about predicting who will become president by exploiting MD5&lt;br /&gt;
http://www.win.tue.nl/hashclash/Nostradamus/ &lt;br /&gt;
&lt;br /&gt;
The following was taken from http://www.freesoft.org/CIE/RFC/1321/4.htm &lt;br /&gt;
&lt;br /&gt;
MD5 Algorithm Description&lt;br /&gt;
We begin by supposing that we have a b-bit message as input, and that we wish to find its message digest. Here b is an arbitrary nonnegative integer; b may be zero, it need not be a multiple of eight, and it may be arbitrarily large. We imagine the bits of the message written down as follows: &lt;br /&gt;
          m_0 m_1 ... m_{b-1}&lt;br /&gt;
The following five steps are performed to compute the message digest of the message. &lt;br /&gt;
&lt;br /&gt;
Step 1. Append Padding Bits&lt;br /&gt;
The message is &amp;quot;padded&amp;quot; (extended) so that its length (in bits) is congruent to 448, modulo 512. That is, the message is extended so that it is just 64 bits shy of being a multiple of 512 bits long. Padding is always performed, even if the length of the message is already congruent to 448, modulo 512. &lt;br /&gt;
Padding is performed as follows: a single &amp;quot;1&amp;quot; bit is appended to the message, and then &amp;quot;0&amp;quot; bits are appended so that the length in bits of the padded message becomes congruent to 448, modulo 512. In all, at least one bit and at most 512 bits are appended. &lt;br /&gt;
&lt;br /&gt;
Step 2. Append Length&lt;br /&gt;
A 64-bit representation of b (the length of the message before the padding bits were added) is appended to the result of the previous step. In the unlikely event that b is greater than 2^64, then only the low-order 64 bits of b are used. (These bits are appended as two 32-bit words and appended low-order word first in accordance with the previous conventions.) &lt;br /&gt;
At this point the resulting message (after padding with bits and with b) has a length that is an exact multiple of 512 bits. Equivalently, this message has a length that is an exact multiple of 16 (32-bit) words. Let M[0 ... N-1] denote the words of the resulting message, where N is a multiple of 16. &lt;br /&gt;
&lt;br /&gt;
Step 3. Initialize MD Buffer&lt;br /&gt;
A four-word buffer (A,B,C,D) is used to compute the message digest. Here each of A, B, C, D is a 32-bit register. These registers are initialized to the following values in hexadecimal, low-order bytes first): &lt;br /&gt;
          word A: 01 23 45 67&lt;br /&gt;
          word B: 89 ab cd ef&lt;br /&gt;
          word C: fe dc ba 98&lt;br /&gt;
          word D: 76 54 32 10&lt;br /&gt;
&lt;br /&gt;
3.4 Step 4. Process Message in 16-Word Blocks&lt;br /&gt;
We first define four auxiliary functions that each take as input three 32-bit words and produce as output one 32-bit word. &lt;br /&gt;
          F(X,Y,Z) = XY v not(X) Z&lt;br /&gt;
          G(X,Y,Z) = XZ v Y not(Z)&lt;br /&gt;
          H(X,Y,Z) = X xor Y xor Z&lt;br /&gt;
          I(X,Y,Z) = Y xor (X v not(Z))&lt;br /&gt;
In each bit position F acts as a conditional: if X then Y else Z. The function F could have been defined using + instead of v since XY and not(X)Z will never have 1's in the same bit position.) It is interesting to note that if the bits of X, Y, and Z are independent and unbiased, the each bit of F(X,Y,Z) will be independent and unbiased. &lt;br /&gt;
The functions G, H, and I are similar to the function F, in that they act in &amp;quot;bitwise parallel&amp;quot; to produce their output from the bits of X, Y, and Z, in such a manner that if the corresponding bits of X, Y, and Z are independent and unbiased, then each bit of G(X,Y,Z), H(X,Y,Z), and I(X,Y,Z) will be independent and unbiased. Note that the function H is the bit-wise &amp;quot;xor&amp;quot; or &amp;quot;parity&amp;quot; function of its inputs. &lt;br /&gt;
This step uses a 64-element table T[1 ... 64] constructed from the sine function. Let T[i] denote the i-th element of the table, which is equal to the integer part of 4294967296 times abs(sin(i)), where i is in radians. The elements of the table are given in the appendix. &lt;br /&gt;
Do the following: &lt;br /&gt;
   /* Process each 16-word block. */&lt;br /&gt;
   For i = 0 to N/16-1 do&lt;br /&gt;
     /* Copy block i into X. */&lt;br /&gt;
     For j = 0 to 15 do&lt;br /&gt;
       Set X[j] to M[i*16+j].&lt;br /&gt;
     end /* of loop on j */&lt;br /&gt;
&lt;br /&gt;
     /* Save A as AA, B as BB, C as CC, and D as DD. */&lt;br /&gt;
     AA = A&lt;br /&gt;
     BB = B&lt;br /&gt;
&lt;br /&gt;
     CC = C&lt;br /&gt;
     DD = D&lt;br /&gt;
&lt;br /&gt;
     /* Round 1. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + F(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  7  1]  [DABC  1 12  2]  [CDAB  2 17  3]  [BCDA  3 22  4]&lt;br /&gt;
     [ABCD  4  7  5]  [DABC  5 12  6]  [CDAB  6 17  7]  [BCDA  7 22  8]&lt;br /&gt;
     [ABCD  8  7  9]  [DABC  9 12 10]  [CDAB 10 17 11]  [BCDA 11 22 12]&lt;br /&gt;
     [ABCD 12  7 13]  [DABC 13 12 14]  [CDAB 14 17 15]  [BCDA 15 22 16]&lt;br /&gt;
&lt;br /&gt;
     /* Round 2. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + G(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  1  5 17]  [DABC  6  9 18]  [CDAB 11 14 19]  [BCDA  0 20 20]&lt;br /&gt;
     [ABCD  5  5 21]  [DABC 10  9 22]  [CDAB 15 14 23]  [BCDA  4 20 24]&lt;br /&gt;
     [ABCD  9  5 25]  [DABC 14  9 26]  [CDAB  3 14 27]  [BCDA  8 20 28]&lt;br /&gt;
     [ABCD 13  5 29]  [DABC  2  9 30]  [CDAB  7 14 31]  [BCDA 12 20 32]&lt;br /&gt;
&lt;br /&gt;
     /* Round 3. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + H(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  5  4 33]  [DABC  8 11 34]  [CDAB 11 16 35]  [BCDA 14 23 36]&lt;br /&gt;
     [ABCD  1  4 37]  [DABC  4 11 38]  [CDAB  7 16 39]  [BCDA 10 23 40]&lt;br /&gt;
     [ABCD 13  4 41]  [DABC  0 11 42]  [CDAB  3 16 43]  [BCDA  6 23 44]&lt;br /&gt;
     [ABCD  9  4 45]  [DABC 12 11 46]  [CDAB 15 16 47]  [BCDA  2 23 48]&lt;br /&gt;
&lt;br /&gt;
     /* Round 4. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + I(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  6 49]  [DABC  7 10 50]  [CDAB 14 15 51]  [BCDA  5 21 52]&lt;br /&gt;
     [ABCD 12  6 53]  [DABC  3 10 54]  [CDAB 10 15 55]  [BCDA  1 21 56]&lt;br /&gt;
     [ABCD  8  6 57]  [DABC 15 10 58]  [CDAB  6 15 59]  [BCDA 13 21 60]&lt;br /&gt;
     [ABCD  4  6 61]  [DABC 11 10 62]  [CDAB  2 15 63]  [BCDA  9 21 64]&lt;br /&gt;
&lt;br /&gt;
     /* Then perform the following additions. (That is increment each&lt;br /&gt;
        of the four registers by the value it had before this block&lt;br /&gt;
        was started.) */&lt;br /&gt;
     A = A + AA&lt;br /&gt;
     B = B + BB&lt;br /&gt;
     C = C + CC&lt;br /&gt;
     D = D + DD&lt;br /&gt;
&lt;br /&gt;
   end /* of loop on i */&lt;br /&gt;
&lt;br /&gt;
Step 5. Output&lt;br /&gt;
The message digest produced as output is A, B, C, D. That is, we begin with the low-order byte of A, and end with the high-order byte of D. &lt;br /&gt;
This completes the description of MD5. A reference implementation in C is given in the appendix. &lt;br /&gt;
&lt;br /&gt;
Summary&lt;br /&gt;
The MD5 message-digest algorithm is simple to implement, and provides a &amp;quot;fingerprint&amp;quot; or message digest of a message of arbitrary length. It is conjectured that the difficulty of coming up with two messages having the same message digest is on the order of 2^64 operations, and that the difficulty of coming up with any message having a given message digest is on the order of 2^128 operations. The MD5 algorithm has been carefully scrutinized for weaknesses. It is, however, a relatively new algorithm and further security analysis is of course justified, as is the cas Differences Between MD4 and MD5&lt;br /&gt;
The following are the differences between MD4 and MD5: &lt;br /&gt;
1.	A fourth round has been added. &lt;br /&gt;
2.	Each step now has a unique additive constant. &lt;br /&gt;
3.	The function g in round 2 was changed from (XY v XZ v YZ) to (XZ v Y not(Z)) to make g less symmetric. &lt;br /&gt;
4.	Each step now adds in the result of the previous step. This promotes a faster &amp;quot;avalanche effect&amp;quot;. &lt;br /&gt;
5.	The order in which input words are accessed in rounds 2 and 3 is changed, to make these patterns less like each other. &lt;br /&gt;
6.	The shift amounts in each round have been approximately optimized, to yield a faster &amp;quot;avalanche effect.&amp;quot; The shifts in different rounds are distinct.&lt;br /&gt;
&lt;br /&gt;
== Engineering agar ==&lt;br /&gt;
[http://www.biotech.iastate.edu/lab_protocols/EvoAntiResBact.html A lab for showing antibiotic resistance across Amp concentration gradient]&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4780</id>
		<title>Math Modeling Pages</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Math_Modeling_Pages&amp;diff=4780"/>
				<updated>2008-05-22T13:29:08Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: /* Papers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the place for math modelers to post ideas, papers, examples and computer programs.&lt;br /&gt;
&lt;br /&gt;
== Papers ==&lt;br /&gt;
[http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=1762088 Stochastic model of E. coli AI-2 quorum signal circuit reveals alternative synthesis pathways] Describes a Stochastic Petri Net (SPN) model of AI-2 (Lux), provides XML code and rate constants.&lt;br /&gt;
&lt;br /&gt;
How to break MD5 and other Hash functions.. A paper written by Xiaoyun Wang and her co-authors about how to break MD5 – i.e. how to make collisions occur &lt;br /&gt;
http://www.infosec.sdu.edu.cn/uploadfile/papers/How%20to%20Break%20MD5%20and%20Other%20Hash%20Functions.pdf &lt;br /&gt;
Nostradamus attack – i.e. the bit about predicting who will become president by exploiting MD5&lt;br /&gt;
http://www.win.tue.nl/hashclash/Nostradamus/ &lt;br /&gt;
&lt;br /&gt;
The following was taken from http://www.freesoft.org/CIE/RFC/1321/4.htm &lt;br /&gt;
&lt;br /&gt;
MD5 Algorithm Description&lt;br /&gt;
We begin by supposing that we have a b-bit message as input, and that we wish to find its message digest. Here b is an arbitrary nonnegative integer; b may be zero, it need not be a multiple of eight, and it may be arbitrarily large. We imagine the bits of the message written down as follows: &lt;br /&gt;
          m_0 m_1 ... m_{b-1}&lt;br /&gt;
The following five steps are performed to compute the message digest of the message. &lt;br /&gt;
&lt;br /&gt;
Step 1. Append Padding Bits&lt;br /&gt;
The message is &amp;quot;padded&amp;quot; (extended) so that its length (in bits) is congruent to 448, modulo 512. That is, the message is extended so that it is just 64 bits shy of being a multiple of 512 bits long. Padding is always performed, even if the length of the message is already congruent to 448, modulo 512. &lt;br /&gt;
Padding is performed as follows: a single &amp;quot;1&amp;quot; bit is appended to the message, and then &amp;quot;0&amp;quot; bits are appended so that the length in bits of the padded message becomes congruent to 448, modulo 512. In all, at least one bit and at most 512 bits are appended. &lt;br /&gt;
&lt;br /&gt;
Step 2. Append Length&lt;br /&gt;
A 64-bit representation of b (the length of the message before the padding bits were added) is appended to the result of the previous step. In the unlikely event that b is greater than 2^64, then only the low-order 64 bits of b are used. (These bits are appended as two 32-bit words and appended low-order word first in accordance with the previous conventions.) &lt;br /&gt;
At this point the resulting message (after padding with bits and with b) has a length that is an exact multiple of 512 bits. Equivalently, this message has a length that is an exact multiple of 16 (32-bit) words. Let M[0 ... N-1] denote the words of the resulting message, where N is a multiple of 16. &lt;br /&gt;
&lt;br /&gt;
Step 3. Initialize MD Buffer&lt;br /&gt;
A four-word buffer (A,B,C,D) is used to compute the message digest. Here each of A, B, C, D is a 32-bit register. These registers are initialized to the following values in hexadecimal, low-order bytes first): &lt;br /&gt;
          word A: 01 23 45 67&lt;br /&gt;
          word B: 89 ab cd ef&lt;br /&gt;
          word C: fe dc ba 98&lt;br /&gt;
          word D: 76 54 32 10&lt;br /&gt;
&lt;br /&gt;
3.4 Step 4. Process Message in 16-Word Blocks&lt;br /&gt;
We first define four auxiliary functions that each take as input three 32-bit words and produce as output one 32-bit word. &lt;br /&gt;
          F(X,Y,Z) = XY v not(X) Z&lt;br /&gt;
          G(X,Y,Z) = XZ v Y not(Z)&lt;br /&gt;
          H(X,Y,Z) = X xor Y xor Z&lt;br /&gt;
          I(X,Y,Z) = Y xor (X v not(Z))&lt;br /&gt;
In each bit position F acts as a conditional: if X then Y else Z. The function F could have been defined using + instead of v since XY and not(X)Z will never have 1's in the same bit position.) It is interesting to note that if the bits of X, Y, and Z are independent and unbiased, the each bit of F(X,Y,Z) will be independent and unbiased. &lt;br /&gt;
The functions G, H, and I are similar to the function F, in that they act in &amp;quot;bitwise parallel&amp;quot; to produce their output from the bits of X, Y, and Z, in such a manner that if the corresponding bits of X, Y, and Z are independent and unbiased, then each bit of G(X,Y,Z), H(X,Y,Z), and I(X,Y,Z) will be independent and unbiased. Note that the function H is the bit-wise &amp;quot;xor&amp;quot; or &amp;quot;parity&amp;quot; function of its inputs. &lt;br /&gt;
This step uses a 64-element table T[1 ... 64] constructed from the sine function. Let T[i] denote the i-th element of the table, which is equal to the integer part of 4294967296 times abs(sin(i)), where i is in radians. The elements of the table are given in the appendix. &lt;br /&gt;
Do the following: &lt;br /&gt;
   /* Process each 16-word block. */&lt;br /&gt;
   For i = 0 to N/16-1 do&lt;br /&gt;
     /* Copy block i into X. */&lt;br /&gt;
     For j = 0 to 15 do&lt;br /&gt;
       Set X[j] to M[i*16+j].&lt;br /&gt;
     end /* of loop on j */&lt;br /&gt;
&lt;br /&gt;
     /* Save A as AA, B as BB, C as CC, and D as DD. */&lt;br /&gt;
     AA = A&lt;br /&gt;
     BB = B&lt;br /&gt;
&lt;br /&gt;
     CC = C&lt;br /&gt;
     DD = D&lt;br /&gt;
&lt;br /&gt;
     /* Round 1. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + F(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  7  1]  [DABC  1 12  2]  [CDAB  2 17  3]  [BCDA  3 22  4]&lt;br /&gt;
     [ABCD  4  7  5]  [DABC  5 12  6]  [CDAB  6 17  7]  [BCDA  7 22  8]&lt;br /&gt;
     [ABCD  8  7  9]  [DABC  9 12 10]  [CDAB 10 17 11]  [BCDA 11 22 12]&lt;br /&gt;
     [ABCD 12  7 13]  [DABC 13 12 14]  [CDAB 14 17 15]  [BCDA 15 22 16]&lt;br /&gt;
&lt;br /&gt;
     /* Round 2. */&lt;br /&gt;
     /* Let [abcd k s i] denote the operation&lt;br /&gt;
          a = b + ((a + G(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  1  5 17]  [DABC  6  9 18]  [CDAB 11 14 19]  [BCDA  0 20 20]&lt;br /&gt;
     [ABCD  5  5 21]  [DABC 10  9 22]  [CDAB 15 14 23]  [BCDA  4 20 24]&lt;br /&gt;
     [ABCD  9  5 25]  [DABC 14  9 26]  [CDAB  3 14 27]  [BCDA  8 20 28]&lt;br /&gt;
     [ABCD 13  5 29]  [DABC  2  9 30]  [CDAB  7 14 31]  [BCDA 12 20 32]&lt;br /&gt;
&lt;br /&gt;
     /* Round 3. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + H(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  5  4 33]  [DABC  8 11 34]  [CDAB 11 16 35]  [BCDA 14 23 36]&lt;br /&gt;
     [ABCD  1  4 37]  [DABC  4 11 38]  [CDAB  7 16 39]  [BCDA 10 23 40]&lt;br /&gt;
     [ABCD 13  4 41]  [DABC  0 11 42]  [CDAB  3 16 43]  [BCDA  6 23 44]&lt;br /&gt;
     [ABCD  9  4 45]  [DABC 12 11 46]  [CDAB 15 16 47]  [BCDA  2 23 48]&lt;br /&gt;
&lt;br /&gt;
     /* Round 4. */&lt;br /&gt;
     /* Let [abcd k s t] denote the operation&lt;br /&gt;
          a = b + ((a + I(b,c,d) + X[k] + T[i]) &amp;lt;&amp;lt;&amp;lt; s). */&lt;br /&gt;
     /* Do the following 16 operations. */&lt;br /&gt;
     [ABCD  0  6 49]  [DABC  7 10 50]  [CDAB 14 15 51]  [BCDA  5 21 52]&lt;br /&gt;
     [ABCD 12  6 53]  [DABC  3 10 54]  [CDAB 10 15 55]  [BCDA  1 21 56]&lt;br /&gt;
     [ABCD  8  6 57]  [DABC 15 10 58]  [CDAB  6 15 59]  [BCDA 13 21 60]&lt;br /&gt;
     [ABCD  4  6 61]  [DABC 11 10 62]  [CDAB  2 15 63]  [BCDA  9 21 64]&lt;br /&gt;
&lt;br /&gt;
     /* Then perform the following additions. (That is increment each&lt;br /&gt;
        of the four registers by the value it had before this block&lt;br /&gt;
        was started.) */&lt;br /&gt;
     A = A + AA&lt;br /&gt;
     B = B + BB&lt;br /&gt;
     C = C + CC&lt;br /&gt;
     D = D + DD&lt;br /&gt;
&lt;br /&gt;
   end /* of loop on i */&lt;br /&gt;
&lt;br /&gt;
Step 5. Output&lt;br /&gt;
The message digest produced as output is A, B, C, D. That is, we begin with the low-order byte of A, and end with the high-order byte of D. &lt;br /&gt;
This completes the description of MD5. A reference implementation in C is given in the appendix. &lt;br /&gt;
&lt;br /&gt;
Summary&lt;br /&gt;
The MD5 message-digest algorithm is simple to implement, and provides a &amp;quot;fingerprint&amp;quot; or message digest of a message of arbitrary length. It is conjectured that the difficulty of coming up with two messages having the same message digest is on the order of 2^64 operations, and that the difficulty of coming up with any message having a given message digest is on the order of 2^128 operations. The MD5 algorithm has been carefully scrutinized for weaknesses. It is, however, a relatively new algorithm and further security analysis is of course justified, as is the cas Differences Between MD4 and MD5&lt;br /&gt;
The following are the differences between MD4 and MD5: &lt;br /&gt;
1.	A fourth round has been added. &lt;br /&gt;
2.	Each step now has a unique additive constant. &lt;br /&gt;
3.	The function g in round 2 was changed from (XY v XZ v YZ) to (XZ v Y not(Z)) to make g less symmetric. &lt;br /&gt;
4.	Each step now adds in the result of the previous step. This promotes a faster &amp;quot;avalanche effect&amp;quot;. &lt;br /&gt;
5.	The order in which input words are accessed in rounds 2 and 3 is changed, to make these patterns less like each other. &lt;br /&gt;
6.	The shift amounts in each round have been approximately optimized, to yield a faster &amp;quot;avalanche effect.&amp;quot; The shifts in different rounds are distinct.&lt;br /&gt;
&lt;br /&gt;
== Engineering agar ==&lt;br /&gt;
[http://www.biotech.iastate.edu/lab_protocols/EvoAntiResBact.html A lab for showing antibiotic resistance across Amp concentration gradient]&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=Wet_Lab_Pages&amp;diff=4757</id>
		<title>Wet Lab Pages</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Wet_Lab_Pages&amp;diff=4757"/>
				<updated>2008-05-21T15:20:05Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: /* Registry parts to clone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the space for MWSU and DC wet lab students to create content. &lt;br /&gt;
Our part numbers will be in this range only: '''BBa_K091000 to BBa_K091999'''. &lt;br /&gt;
&lt;br /&gt;
# [http://gcat.davidson.edu/GcatWiki/index.php/Davidson_Missouri_W/Davidson_Protocols Davidson Wet Lab Protocols]&lt;br /&gt;
#[http://gcat.davidson.edu/GcatWiki/index.php/Davidson_Missouri_W/MWSU_protocols MWSU Wet Lab Protocols]&lt;br /&gt;
# [http://www.bio.davidson.edu/courses/Molbio/Protocols/ORIs.html Plasmid Compatability]&lt;br /&gt;
# [http://spreadsheets.google.com/pub?key=pw-NamR_FPJOfhl6mDrkZcw Davidson -80 Stocks]&lt;br /&gt;
#[http://tools.wikimedia.de/~tangotango/nubio/ FAQs for Wikis]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
== Registry parts to clone ==&lt;br /&gt;
&lt;br /&gt;
'''Composite Parts''':&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;50&amp;quot;|Part&lt;br /&gt;
!width=&amp;quot;225&amp;quot;|Description&lt;br /&gt;
!width=&amp;quot;225&amp;quot;|Student Responsible (DC or MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_F2621|| AHL receiver with lux pR and codes for LuxR || Sven(MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_I15030 || Lux-sender(Autoinducing)Codes for LuxI and LuxR || Kelly Davis (DC)  will this send to part BBa_I13263&lt;br /&gt;
|-&lt;br /&gt;
|BBa_I13263 || Lux Receiver (HSL &amp;amp; R0063 driven)produces YFP || Pallivi Penumetcha  (DC)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_I0426 || Las-reciver(EYFP) || Sven (MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_I0466|| RhlR Protein Generator without LVA || Sven(MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_I0407 || LasI test || Erin Feeney (DC)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_I0426 || LasR test || Samantha Simpson (DC)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_#### || Description || Sven(MW)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Basic Parts''':&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!width=&amp;quot;50&amp;quot;|Part&lt;br /&gt;
!width=&amp;quot;225&amp;quot;|Description&lt;br /&gt;
!width=&amp;quot;225&amp;quot;|Student Responsible (DC or MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_C0061 || LuxI gene with LVA || later&lt;br /&gt;
|-&lt;br /&gt;
|BBa_C0161 || LuxI gene without LVA || Xiao Zhu (MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_C0062 || LuxR gene without LVA || John Igo (MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_R0063 || lux pL|| Aaron Lewis (MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_R0062|| lux pR|| Andrew Gordon(MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_C0070||  rhlI gene  ||  Jeff Poet     (MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_C0071|| rhlR gene with LVA|| Sven (MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_R0079 || las pR || Todd Eckdahl (MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_C0079 || lasR gene || Robert Cool (MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_C0078 || LasI gene || Alicia Allen (MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_PA3477|| rhlR gene without LVA || Sven (MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_#### || Description || Sven(MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_#### || Description || Sven(MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_#### || Description || Sven(MW)&lt;br /&gt;
|-&lt;br /&gt;
|BBa_#### || Description || Sven(MW)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=Davidson/Missouri_Western_iGEM2008&amp;diff=4467</id>
		<title>Davidson/Missouri Western iGEM2008</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Davidson/Missouri_Western_iGEM2008&amp;diff=4467"/>
				<updated>2008-04-04T20:55:32Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: /* iGEM 2007 Useful Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size = &amp;quot;6&amp;quot;&amp;gt;&amp;lt;center&amp;gt;&lt;br /&gt;
Davidson College - Missouri Western State University&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
iGEM 2008&lt;br /&gt;
&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== iGEM 2007 Useful Information ==&lt;br /&gt;
Virginia Tech (2007)  Engineering and Epidemic&lt;br /&gt;
&lt;br /&gt;
The use of bacteria to model the spread of a disease.  It would appear that cell-to-cell communication is a major part of the design of the project.  It is unclear how successful the team was in building parts useful to us.  Most of the project seems to be on the mathematical modeling side of things.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
University of Waterloo (2007)  Half-Adder Logic Gate&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to design a basic device for computing. Our idea was to reproduce a circuit element called a half adder with DNA, which takes in two 1-bit inputs, adds them, and outputs a sum and a carry. Our device responds to two inputs: red light and the chemical tetracycline. The input sensors control a set of genetic switches in order to carry out the computation and fluoresces green, red, or neither, depending on the outcome.  Useful for long addition in base-2.&lt;br /&gt;
&lt;br /&gt;
UCSF (2007)  Project 1  Protein Scaffolds as a Molecular Breadboard&lt;br /&gt;
&lt;br /&gt;
Using synthetic protein scaffolds to control information flow of a kinase pathway in eukaryotic cells.&lt;br /&gt;
&lt;br /&gt;
Tianjin (2007)   Biological diode&lt;br /&gt;
&lt;br /&gt;
In this project, we try to construct a biological device to imitate the function of the diode, one of the most significant parts in the electric integrate circuit. The flow of molecular signal AHL is considered as the current of electric circuit. The generator, amplifiers, blocks and detector cells are constructed with the parts provided by MIT and then are equipped in series in order to establish the cellular and molecular biological diode. Our device, which is a combination of technologies from the field of computer science, molecular biology and chemical engineering, is a breakthrough for the application of mature techniques of chemical engineering to the field of synthetic biology.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://parts.mit.edu/igem07/index.php/Duke/Projects/bc - bacterial communication with light.&lt;br /&gt;
&lt;br /&gt;
http://parts.mit.edu/igem07/index.php/Cambridge  - they talk a little about making a bacterial internet, I have no idea what they mean.&lt;br /&gt;
&lt;br /&gt;
http://parts.mit.edu/igem07/index.php/Tokyo_Tech - They say, “Bistability and cell-cell communication are necessary to realize our model of ‘Balanced differentiation’.”&lt;br /&gt;
&lt;br /&gt;
== iGEM 2006 Useful Information ==&lt;br /&gt;
 &lt;br /&gt;
'''The University of Calgary''' 2006 iGEM team is working on the following project. A petri plate is inhabited by two strains of genetically engineered ''E. coli'' bacteria. The first strain---the Senders---have been engineered to emit two chemical signals into the plate environment: Aspartate and Acyl Homoserine Lactone (AHSL). The senders themselves are activated by light. The second strain---the Receivers---have been designed to respond to each of these signals in a different way.&lt;br /&gt;
The Receivers express Green Fluorescent Protein in the vicinity of AHSL.&lt;br /&gt;
The Receivers also move towards areas of greater Aspartate concentration. The same bacteria also decrease Aspartate levels where they are present, as this is a nutrient and constitutes the reason for why they are attracted to it in the first place.&lt;br /&gt;
Our goal is to make the Senders and Receivers create interesting behaviour dynamics visualized by fluorescent patterns.&lt;br /&gt;
&lt;br /&gt;
http://parts.mit.edu/r/parts/partsdb/pgroup.cgi?pgroup=iGEM2006&amp;amp;group=iGEM2006_Calgary&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Berkeley''': networks of cells communicating via conjugation; demonstrated the transmission of a coded message&lt;br /&gt;
&lt;br /&gt;
http://parts2.mit.edu/wiki/index.php/University_of_California_Berkeley_2006&lt;br /&gt;
&lt;br /&gt;
“We have developed the process of addressable conjugation for communication within a network of E. coli bacteria. Here, bacteria send messages to one another via conjugation of plasmid DNAs, but the message is only meaningful to cells with a matching address sequence. In this way, the Watson Crick base-pairing of addressing sequences replaces the spatial connectivity present in neural systems. To construct this system, we have adapted natural conjugation systems as the communication device. Information contained in the transferred plasmids is only accessable by &amp;quot;unlocking&amp;quot; the message using RNA based 'keys'. The resulting addressable conjugation process is being adapted to construct a network of NAND logic gates in bacterial cultures.”&lt;br /&gt;
&lt;br /&gt;
'''Mexico''': cellular automata&lt;br /&gt;
&lt;br /&gt;
http://parts2.mit.edu/wiki/index.php/IPN_UNAM_2006&lt;br /&gt;
&lt;br /&gt;
“We wish contribute to the iGEM project development various protein based bio-components. We will work along three main lines: complex and reversible dynamical systems and formal languages, that support particles and multiple reactions, related to the molecular transformations.”&lt;br /&gt;
&lt;br /&gt;
“We study two-dimensional cellular automaton, where every cell takes states 0 and 1 and updates its state depending on sum of states of its 8 closest neighbors as follows. Cell in state 0 takes state 1 if there are exactly two neighbors in state 1, otherwise the cell remains in state 0. Cell in state 1 remains in state 1 if there are exactly seven neighbors in state 1, otherwise the cell switches to state 0. CA governed by such cell-state transition rule exhibits reaction-diffusion like pattern dynamics, so we call this Diffusion Rule.”&lt;br /&gt;
&lt;br /&gt;
“Using the diffusion rule we can generate a dynamical pattern over a system, like turn on/off ligth with alive o dead cells that shows a luminescence, examples include fluorescence, bioluminescence and phosphorescence.”&lt;br /&gt;
“Starting with any configuration, the cells alive are represented in yellow (the activator) and dead in black (the inhibitor), see figure 4. The system is created defining an inicial state over the base configuration (see figure 3). The luminescence is obtained by the evolution of this initial pattern.”&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Brown:Bacterial''' Freeze Tag&lt;br /&gt;
http://parts.mit.edu/wiki/index.php/Brown:Bacterial_Freeze_Tag#Overview&lt;br /&gt;
2006 igem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This project involves programming bacteria to be able to play a game of freeze tag. Bacteria will be engineered to swim around a microfluidics device until they reach a certain proximity to the 'IT' cell and then they will lose their ability to move. This loss of motility will be combined with a change in color from Green to Blue. When another bacterium, which is moving (not the 'IT' cell), reaches a certain proximity to the 'frozen' bacteria it will again regain its ability to move and turn from Blue to Yellow.&lt;br /&gt;
&lt;br /&gt;
TetR promoted with LuxI downstream. LuxI is an enzyme that produces AHL and will produce the red fluorescent protein (RFP). The AHL produced is exported from the cell where it then forms a complex with the LuxR protein that is produced by the AHL sensor within the Receiver cell.&lt;br /&gt;
&lt;br /&gt;
The AHL sensor is TetR promoted and forms the LuxR protein which then forms a complex with AHL. This LuxR and AHL complex then activates the pLuxR promoter. Downstream of the pLuxR promoter is the LacI protein. LacI inhibits the pLac promoter on the &amp;quot;Freeze Machine&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A promoter that is regulated by LacI will promote the production of LasI, MotB, and cI. This will subsequently inhibit the production of CFP and LasR. In the presence of LacI, however, MotB, LasI, and cI will not be produced. CFP will therefore be produced along with LasR and LacI. This results in the &amp;quot;freezing&amp;quot; of the cell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''McGill University Split YFP'''&lt;br /&gt;
http://parts.mit.edu/wiki/index.php/McGill_University_2006&lt;br /&gt;
&lt;br /&gt;
The idea behind the project is fluorescence complementation, which involves the joining of two leucine zipper proteins, Fos and Jun, each fused to a half terminus of YFP. Originally, the Fos and Jun proteins were fused to a beta gene coding for a membrane protein. The project involved performing a PCR reaction to produce two inserts, the N-terminus and the C-terminus of YFP, and then ligating these inserts into 2 vectors, containing Jun-beta and the Fos-beta respectively. The two fusion proteins (Fos-beta-YFPC and Jun-beta-YFPN) were expressed in the cell membrane of two populations of E. coli. We then allowed these two cell types to combine, resulting—ideally—in the complementary binding of the Jun and Fos proteins when the cells are in close contact. Consequently, the two half YFP fragments bind to form full YFP, and the cells will fluoresce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Penn State'''&lt;br /&gt;
http://openwetware.org/wiki/IGEM:PennState/2006&lt;br /&gt;
&lt;br /&gt;
The bacterial relay race takes advantage of an ability to control cellular motility using inducible promoters such as those involved in nutrient catabolism or quorum sensing. “Receiver” bacteria move in response to small-molecule signals either added to the system or originating from motile, “sender” strains. The most significant challenges relating to this project stem from difficulties of tightly controlling the target motility gene motB. Low levels of motB expression result in system failure (constitutive motility), and resolving this issue is essential to developing reliable modular systems that are the hallmark of synthetic biology&lt;br /&gt;
&lt;br /&gt;
'''Tokyo'''&lt;br /&gt;
http://parts.mit.edu/wiki/index.php/Tokyo_Alliance:_Conclusion&lt;br /&gt;
&lt;br /&gt;
Our project is to make this Noughts-and-Crosses in vivo.&lt;br /&gt;
-1.	Inputs&lt;br /&gt;
-1.	Chemicals&lt;br /&gt;
-1.	To indicate each square&lt;br /&gt;
-1.	To be spreaded into all squares.&lt;br /&gt;
-1.	Outputs&lt;br /&gt;
-1.	Reporter of SYANAC: GFP&lt;br /&gt;
Reporter of Human: RFP&lt;br /&gt;
&lt;br /&gt;
We can say we will expand the number of regulator genes we can use to build logic gates and through this project we made simple constructing method.&lt;br /&gt;
&lt;br /&gt;
== iGEM 2005 Useful Information ==&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	<entry>
		<id>https://gcat.davidson.edu/GcatWiki/index.php?title=Main_Page&amp;diff=4466</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://gcat.davidson.edu/GcatWiki/index.php?title=Main_Page&amp;diff=4466"/>
				<updated>2008-04-04T20:54:45Z</updated>
		
		<summary type="html">&lt;p&gt;JoIgo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==This is our first attempt at &amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;G&amp;lt;font color=&amp;quot;#FF33FF&amp;quot;&amp;gt;C&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;A&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;T&amp;lt;/font&amp;gt;&amp;lt;/strong&amp;gt; Community Wiki.==&lt;br /&gt;
This Wiki has been set up for the use of the GCAT community.  The intent is that it be maintained by its users.&lt;br /&gt;
&lt;br /&gt;
Please read the [[Guidelines]] for use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== [[Davidson/Missouri Western iGEM2008]] ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== [[MAGIC Tool Development]] ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== [[Nova Southeastern University]] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[Davidson College]]==  Small liberal arts college near Charlotte, NC. &lt;br /&gt;
A. Malcolm Campbell and Laurie J. Heyer GCAT faculty&lt;br /&gt;
&lt;br /&gt;
* [http://gcat.davidson.edu/GcatWiki/index.php/User:Kahaynes Karmella A. Haynes], Visiting Assitant Professor of Biology&lt;br /&gt;
&lt;br /&gt;
* [[A_Review_of_Synthetic_Biology |A Review of Synthetic Biology - Davidson College Synthetic Biology Seminar (Fall 2007)]]&lt;br /&gt;
&lt;br /&gt;
== [[Next School Here]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Please see [http://meta.wikipedia.org/wiki/MediaWiki_i18n documentation on customizing the interface]&lt;br /&gt;
and the [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide User's Guide] for usage and configuration help.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.bio.davidson.edu/GCAT GCAT Main Page]&lt;br /&gt;
&lt;br /&gt;
http://parts.mit.edu/igem07/index.php/Duke/Projects/bc - bacterial communication with light.&lt;br /&gt;
&lt;br /&gt;
http://parts.mit.edu/igem07/index.php/Cambridge  - they talk a little about making a bacterial internet, I have no idea what they mean.&lt;br /&gt;
&lt;br /&gt;
http://parts.mit.edu/igem07/index.php/Tokyo_Tech - They say, “Bistability and cell-cell communication are necessary to realize our model of ‘Balanced differentiation’.”&lt;/div&gt;</summary>
		<author><name>JoIgo</name></author>	</entry>

	</feed>