<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.yobi.be/index.php?action=history&amp;feed=atom&amp;title=Cory_Wedding_Ring</id>
	<title>Cory Wedding Ring - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.yobi.be/index.php?action=history&amp;feed=atom&amp;title=Cory_Wedding_Ring"/>
	<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;action=history"/>
	<updated>2026-05-23T19:37:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=6846&amp;oldid=prev</id>
		<title>PhilippeTeuwen: Reverted edits by Etegohy (Talk) to last revision by PhilippeTeuwen</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=6846&amp;oldid=prev"/>
		<updated>2010-11-24T20:35:17Z</updated>

		<summary type="html">&lt;p&gt;Reverted edits by &lt;a href=&quot;/index.php?title=Special:Contributions/Etegohy&quot; title=&quot;Special:Contributions/Etegohy&quot;&gt;Etegohy&lt;/a&gt; (&lt;a href=&quot;/index.php?title=User_talk:Etegohy&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User talk:Etegohy (page does not exist)&quot;&gt;Talk&lt;/a&gt;) to last revision by &lt;a href=&quot;/index.php?title=User:PhilippeTeuwen&quot; title=&quot;User:PhilippeTeuwen&quot;&gt;PhilippeTeuwen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Can&#039;t load revision 6846&lt;/p&gt;</summary>
		<author><name>PhilippeTeuwen</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=6688&amp;oldid=prev</id>
		<title> at 00:30, 24 November 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=6688&amp;oldid=prev"/>
		<updated>2010-11-24T00:30:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Can&#039;t load revision 6688&lt;/p&gt;</summary>
		<author><name></name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=5161&amp;oldid=prev</id>
		<title>PhilippeTeuwen: /* Links */</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=5161&amp;oldid=prev"/>
		<updated>2008-10-15T18:07:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Links&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:07, 15 October 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.flickr.com/photos/doctorow/tags/weddingring/ Pictures of the ring]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.flickr.com/photos/doctorow/tags/weddingring/ Pictures of the ring]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.schneier.com/blog/archives/2008/09/contest_cory_do.html Bruce&#039;s post on his blog]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.schneier.com/blog/archives/2008/09/contest_cory_do.html Bruce&#039;s post on his blog]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.boingboing.net/2008/10/15/wedding-ring-cipher.html Cory&#039;s announcement of the winners]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Response==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Response==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hello,&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hello,&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PhilippeTeuwen</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=5160&amp;oldid=prev</id>
		<title>PhilippeTeuwen at 18:06, 15 October 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=5160&amp;oldid=prev"/>
		<updated>2008-10-15T18:06:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:06, 15 October 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;UPDATE: &#039;&#039;I&#039;m [http://feeds.boingboing.net/~r/boingboing/iBag/~3/421613496/wedding-ring-cipher.html the runner-up of the challenge], woo-hooo!&#039;&#039;&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;UPDATE: &#039;&#039;I&#039;m [http://feeds.boingboing.net/~r/boingboing/iBag/~3/421613496/wedding-ring-cipher.html the runner-up of the challenge], woo-hooo!&#039;&#039;&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;The first prize goes to Chris Smith with [http://craphound.com/FidgetProtocol.zip The Fidget Protocol (zip)]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;The first prize goes to Chris Smith with [http://craphound.com/FidgetProtocol.zip The Fidget Protocol (zip)]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, congrats to him!&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Links==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Links==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.boingboing.net/2008/09/05/help-design-a-cipher.html Cory&#039;s post on Boing Boing]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.boingboing.net/2008/09/05/help-design-a-cipher.html Cory&#039;s post on Boing Boing]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PhilippeTeuwen</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=5159&amp;oldid=prev</id>
		<title>PhilippeTeuwen at 18:06, 15 October 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=5159&amp;oldid=prev"/>
		<updated>2008-10-15T18:06:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:06, 15 October 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is my response to a small challenge proposed by Cory Doctorow and Bruce Schneier.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is my response to a small challenge proposed by Cory Doctorow and Bruce Schneier.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;UPDATE: &#039;&#039;I&#039;m [http://feeds.boingboing.net/~r/boingboing/iBag/~3/421613496/wedding-ring-cipher.html the runner-up of the challenge], woo-hooo!&#039;&#039;&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;The first prize goes to Chris Smith with [http://craphound.com/FidgetProtocol.zip The Fidget Protocol (zip)]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Links==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Links==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.boingboing.net/2008/09/05/help-design-a-cipher.html Cory&#039;s post on Boing Boing]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.boingboing.net/2008/09/05/help-design-a-cipher.html Cory&#039;s post on Boing Boing]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PhilippeTeuwen</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=4897&amp;oldid=prev</id>
		<title>PhilippeTeuwen: /* Response */</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=4897&amp;oldid=prev"/>
		<updated>2008-09-08T22:18:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Response&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:18, 8 September 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* arbitrary long secret key&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* arbitrary long secret key&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* autokeying: the secret doesn&#039;t repeat but its transformation depends on the message&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* autokeying: the secret doesn&#039;t repeat but its transformation depends on the message&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* not trivial to recover the secret from a plaintext attack (but&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* not trivial to recover the secret from a plaintext attack (but&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; slightly harder)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;slightly harder)&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Globally the idea is that out of the 3 rings, for each step, one ring&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Globally the idea is that out of the 3 rings, for each step, one ring&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PhilippeTeuwen</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=4896&amp;oldid=prev</id>
		<title>PhilippeTeuwen: /* Response */</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=4896&amp;oldid=prev"/>
		<updated>2008-09-08T22:18:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Response&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:18, 8 September 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I tried to have some features such as&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I tried to have some features such as&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* arbitrary long secret key&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* arbitrary long secret key&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* autokeying: the secret doesn&#039;t repeat but its transformation depends&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* autokeying: the secret doesn&#039;t repeat but its transformation depends&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; on the message&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;on the message&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* not trivial to recover the secret from a plaintext attack (but&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* not trivial to recover the secret from a plaintext attack (but&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;slightly harder)&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;slightly harder)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PhilippeTeuwen</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=4895&amp;oldid=prev</id>
		<title>PhilippeTeuwen at 22:15, 8 September 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=4895&amp;oldid=prev"/>
		<updated>2008-09-08T22:15:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:15, 8 September 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 92:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 92:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        dotmode:    [0]: absolute above=ring0  none=ring1 below=ring2&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        dotmode:    [0]: absolute above=ring0  none=ring1 below=ring2&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                     1 : relative above=ring-1 none=ring  below=ring+1&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                     1 : relative above=ring-1 none=ring  below=ring+1&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                     2 : relative to the other ring&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                     2 : relative to the other ring&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; (secretring&amp;lt;&amp;gt;messagering)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(secretring&amp;lt;&amp;gt;messagering)&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        Example:&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        Example:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 125:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 124:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        M: HELLOWORLD|&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        M: HELLOWORLD|&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        C: JSTCLUKDWF|&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        C: JSTCLUKDWF|&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        &amp;gt;&amp;gt;&amp;gt; c=cipher(secret=&#039;CORY&#039;, message=&#039;JSTCLUKDWF&#039;, mode=1,&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        &amp;gt;&amp;gt;&amp;gt; c=cipher(secret=&#039;CORY&#039;, message=&#039;JSTCLUKDWF&#039;, mode=1,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; shifts=(1,2,3))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;shifts=(1,2,3))&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        &amp;gt;&amp;gt;&amp;gt; c.run()&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        &amp;gt;&amp;gt;&amp;gt; c.run()&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        &#039;HELLOWORLD&#039;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        &#039;HELLOWORLD&#039;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 287:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 285:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        period: when to change dots&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        period: when to change dots&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                set to 1 for first ring, 2 for second, 3 for third&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                set to 1 for first ring, 2 for second, 3 for third&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        shift:  initial rotation of the ring, if any, otherwise start&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        shift:  initial rotation of the ring, if any, otherwise start&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; from &#039;A&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;from &#039;A&#039;&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        &quot;&quot;&quot;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        &quot;&quot;&quot;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        self.L=[chr(65+i) for i in range(0,26)]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        self.L=[chr(65+i) for i in range(0,26)]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PhilippeTeuwen</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=4894&amp;oldid=prev</id>
		<title>PhilippeTeuwen: New page: This is my response to a small challenge proposed by Cory Doctorow and Bruce Schneier. ==Links== * [http://www.boingboing.net/2008/09/05/help-design-a-cipher.html Cory&#039;s post on Boing Boin...</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Cory_Wedding_Ring&amp;diff=4894&amp;oldid=prev"/>
		<updated>2008-09-08T22:13:39Z</updated>

		<summary type="html">&lt;p&gt;New page: This is my response to a small challenge proposed by Cory Doctorow and Bruce Schneier. ==Links== * [http://www.boingboing.net/2008/09/05/help-design-a-cipher.html Cory&amp;#039;s post on Boing Boin...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This is my response to a small challenge proposed by Cory Doctorow and Bruce Schneier.&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://www.boingboing.net/2008/09/05/help-design-a-cipher.html Cory&amp;#039;s post on Boing Boing]&lt;br /&gt;
* [http://www.flickr.com/photos/doctorow/tags/weddingring/ Pictures of the ring]&lt;br /&gt;
* [http://www.schneier.com/blog/archives/2008/09/contest_cory_do.html Bruce&amp;#039;s post on his blog]&lt;br /&gt;
==Response==&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
I wrote an example of polyalphabetic substitution cipher, using your ring.&lt;br /&gt;
Maybe it&amp;#039;s worthless but at least you&amp;#039;ll get a Python code easily hackable&lt;br /&gt;
to try out the ciphers of other concurrents as well  ;-) &lt;br /&gt;
&lt;br /&gt;
I tried to have some features such as&lt;br /&gt;
* arbitrary long secret key&lt;br /&gt;
* autokeying: the secret doesn&amp;#039;t repeat but its transformation depends&lt;br /&gt;
on the message&lt;br /&gt;
* not trivial to recover the secret from a plaintext attack (but&lt;br /&gt;
slightly harder)&lt;br /&gt;
&lt;br /&gt;
Globally the idea is that out of the 3 rings, for each step, one ring&lt;br /&gt;
will be designed as the message ring and used to substitute a char of&lt;br /&gt;
the message by the char of the ring below (mod 3: below the last is the&lt;br /&gt;
first) and one ring (can happen to be the same) will be designed as the&lt;br /&gt;
secret ring and used to substitute a char of the secret by the one below.&lt;br /&gt;
The secret is extended by appending the substitution of the first secret&lt;br /&gt;
char at each step, think about circular buffer.&lt;br /&gt;
Dots are used to choose the secret ring and the message ring for the&lt;br /&gt;
next step.&lt;br /&gt;
Dots on the message char will design the secret ring and vice versa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a more formal description of the cipher:&lt;br /&gt;
&lt;br /&gt;
Vocabulary:&lt;br /&gt;
* first ring = the one with dots above, none, below, above...&lt;br /&gt;
* second ring = the middle one&lt;br /&gt;
* third ring = ...&lt;br /&gt;
*ring above/below another one = modulo 3:&lt;br /&gt;
**  above first ring -&amp;gt; third ring&lt;br /&gt;
**  below first ring -&amp;gt; second ring&lt;br /&gt;
**  etc&lt;br /&gt;
*align a ring with a char = align the char on that ring with the &amp;quot;A&amp;quot; of the ring *above*&lt;br /&gt;
*dots indicate a ring = dots on a specific char will tell which ring to consider:&lt;br /&gt;
**  actually several interpretations can be chosen&lt;br /&gt;
**  absolute -&amp;gt; above = first ring / none = second ring / below = third ring&lt;br /&gt;
**  relative to current -&amp;gt; A = ring above / N = same ring / B = ring below&lt;br /&gt;
**  relative to the other ring secret&amp;lt;&amp;gt;message -&amp;gt; &amp;lt;br&amp;gt;A = ring above / N = same ring / B = ring below&lt;br /&gt;
* substitute a char = replace with char of the ring *below*&lt;br /&gt;
* secret ring = ring where to look for the secret char&lt;br /&gt;
* message ring = ring where to look for the message char&lt;br /&gt;
&lt;br /&gt;
Init:&lt;br /&gt;
* Start with rings aligned to a chosen position&lt;br /&gt;
* Pick up a secret string (password)&lt;br /&gt;
* Choose a ring as the secret ring&lt;br /&gt;
These 3 elements constitute the secret key material&lt;br /&gt;
&lt;br /&gt;
Step:&lt;br /&gt;
* Align secret ring with first char of the secret&lt;br /&gt;
* Dots on secret char will indicate the message ring&lt;br /&gt;
* Substitute message char&lt;br /&gt;
* Align message ring with first char of the message&lt;br /&gt;
* Dots on message char will indicate the secret ring&lt;br /&gt;
* Substitute secret char&lt;br /&gt;
&lt;br /&gt;
Loop on steps...&lt;br /&gt;
&lt;br /&gt;
And now the [{{#file:corycipher.py}} Python code]:&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
# -*- coding: latin1 -*-&lt;br /&gt;
&lt;br /&gt;
# Copyright Philippe Teuwen 2008, CC-BY-SA license&lt;br /&gt;
&lt;br /&gt;
class cipher:&lt;br /&gt;
    def __init__(self, secret, message,&lt;br /&gt;
                 mode=0, Sring_idx=0, Mring_idx=0, shifts=(0,0,0),&lt;br /&gt;
                 dotmode=0):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Creates an initialized instance of the cipher&lt;br /&gt;
        &lt;br /&gt;
        secret:     string which will serve as a key&lt;br /&gt;
        message:    string to encode/decode&lt;br /&gt;
        mode:       [0]=encryption / 1=decryption&lt;br /&gt;
        Sring_idx:  [0]/1/2 which ring will be the secret ring at start&lt;br /&gt;
        Mring_idx:  [0]/1/2 which ring will be the message ring at start&lt;br /&gt;
                    this is only relevant when dots indicate a relative ring&lt;br /&gt;
                    i.e. dotmode=1&lt;br /&gt;
        shifts:     ([0]..25,[0]..25,[0]..25) initial positions of the rings&lt;br /&gt;
                    only relative positions are important, (1,2,3)==(4,5,6)&lt;br /&gt;
        &lt;br /&gt;
        The following parameters are to try out different ciphers&lt;br /&gt;
        dotmode:    [0]: absolute above=ring0  none=ring1 below=ring2&lt;br /&gt;
                     1 : relative above=ring-1 none=ring  below=ring+1&lt;br /&gt;
                     2 : relative to the other ring&lt;br /&gt;
(secretring&amp;lt;&amp;gt;messagering)&lt;br /&gt;
&lt;br /&gt;
        Example:&lt;br /&gt;
        &amp;gt;&amp;gt;&amp;gt; c=cipher(secret=&amp;#039;CORY&amp;#039;, message=&amp;#039;HELLOWORLD&amp;#039;, shifts=(1,2,3))&lt;br /&gt;
        &amp;gt;&amp;gt;&amp;gt; c.step()&lt;br /&gt;
        &amp;gt;&amp;gt;&amp;gt; c&lt;br /&gt;
        FGHIJKLMNOPQRSTUVWXYZABCDE&lt;br /&gt;
        CDEFGHIJKLMNOPQRSTUVWXYZAB&lt;br /&gt;
        KLMNOPQRSTUVWXYZABCDEFGHIJ &amp;lt;-Sring &amp;lt;-Mring&lt;br /&gt;
        &amp;lt;BLANKLINE&amp;gt;&lt;br /&gt;
        S: C|ORYX&lt;br /&gt;
        M: H|ELLOWORLD&lt;br /&gt;
        C: J|&lt;br /&gt;
        &amp;gt;&amp;gt;&amp;gt; c.step()&lt;br /&gt;
        &amp;gt;&amp;gt;&amp;gt; c&lt;br /&gt;
        FGHIJKLMNOPQRSTUVWXYZABCDE&lt;br /&gt;
        GHIJKLMNOPQRSTUVWXYZABCDEF &amp;lt;-Mring&lt;br /&gt;
        QRSTUVWXYZABCDEFGHIJKLMNOP &amp;lt;-Sring&lt;br /&gt;
        &amp;lt;BLANKLINE&amp;gt;&lt;br /&gt;
        S: CO|RYXD&lt;br /&gt;
        M: HE|LLOWORLD&lt;br /&gt;
        C: JS|&lt;br /&gt;
        &amp;gt;&amp;gt;&amp;gt; c.run()&lt;br /&gt;
        &amp;#039;JSTCLUKDWF&amp;#039;&lt;br /&gt;
        &amp;gt;&amp;gt;&amp;gt; c&lt;br /&gt;
        LMNOPQRSTUVWXYZABCDEFGHIJK&lt;br /&gt;
        YZABCDEFGHIJKLMNOPQRSTUVWX &amp;lt;-Sring&lt;br /&gt;
        MNOPQRSTUVWXYZABCDEFGHIJKL &amp;lt;-Mring&lt;br /&gt;
        &amp;lt;BLANKLINE&amp;gt;&lt;br /&gt;
        S: CORYXDSJGC|ORPQ&lt;br /&gt;
        M: HELLOWORLD|&lt;br /&gt;
        C: JSTCLUKDWF|&lt;br /&gt;
        &amp;gt;&amp;gt;&amp;gt; c=cipher(secret=&amp;#039;CORY&amp;#039;, message=&amp;#039;JSTCLUKDWF&amp;#039;, mode=1,&lt;br /&gt;
shifts=(1,2,3))&lt;br /&gt;
        &amp;gt;&amp;gt;&amp;gt; c.run()&lt;br /&gt;
        &amp;#039;HELLOWORLD&amp;#039;&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        self.rings=[ring(1, shifts[0]),&lt;br /&gt;
                    ring(2, shifts[1]),&lt;br /&gt;
                    ring(3, shifts[2])]&lt;br /&gt;
        self.Sring_idx=Sring_idx&lt;br /&gt;
        self.Mring_idx=Mring_idx&lt;br /&gt;
        self.mode=mode&lt;br /&gt;
        self.dotmode=dotmode&lt;br /&gt;
        # Those Xhist are just for keeping history of processed chars:&lt;br /&gt;
        self.Shist=string(&amp;#039;&amp;#039;)&lt;br /&gt;
        self.Mhist=string(&amp;#039;&amp;#039;)&lt;br /&gt;
        self.Chist=string(&amp;#039;&amp;#039;)&lt;br /&gt;
        self.S=string(secret)&lt;br /&gt;
        if self.mode==0:&lt;br /&gt;
        # encryption&lt;br /&gt;
            self.M=string(message)&lt;br /&gt;
            self.C=string(&amp;#039;&amp;#039;)&lt;br /&gt;
        else:&lt;br /&gt;
        # decryption&lt;br /&gt;
            self.M=string(&amp;#039;&amp;#039;)&lt;br /&gt;
            self.C=string(message)&lt;br /&gt;
        self.steps=0&lt;br /&gt;
    def __repr__(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Comprehensive representation of the system:&lt;br /&gt;
        its 3 rings with flags on secretring &amp;amp; messagering&lt;br /&gt;
        and its secret string, message string and enciphered string&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        s=&amp;#039;&amp;#039;&lt;br /&gt;
        for i in range(0,3):&lt;br /&gt;
            s+=repr(self.rings[i])&lt;br /&gt;
            if self.Sring_idx == i:&lt;br /&gt;
                s+=&amp;#039; &amp;lt;-Sring&amp;#039;&lt;br /&gt;
            if self.Mring_idx == i:&lt;br /&gt;
                s+=&amp;#039; &amp;lt;-Mring&amp;#039;&lt;br /&gt;
            s+=&amp;#039;\n&amp;#039;&lt;br /&gt;
        s+=&amp;#039;\nS: &amp;#039;+repr(self.Shist)+&amp;#039;|&amp;#039;+repr(self.S)&lt;br /&gt;
        if self.mode==0:&lt;br /&gt;
            s+=&amp;#039;\nM: &amp;#039;+repr(self.Mhist)+&amp;#039;|&amp;#039;+repr(self.M)&lt;br /&gt;
            s+=&amp;#039;\nC: &amp;#039;+repr(self.C)+&amp;#039;|&amp;#039;&lt;br /&gt;
        else:&lt;br /&gt;
            s+=&amp;#039;\nM: &amp;#039;+repr(self.M)+&amp;#039;|&amp;#039;&lt;br /&gt;
            s+=&amp;#039;\nC: &amp;#039;+repr(self.Chist)+&amp;#039;|&amp;#039;+repr(self.C)&lt;br /&gt;
        return s&lt;br /&gt;
&lt;br /&gt;
    def Sring(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;The secret ring&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self.rings[self.Sring_idx]&lt;br /&gt;
&lt;br /&gt;
    def aboveSring(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;The ring above the secret ring (mod 3)&lt;br /&gt;
&lt;br /&gt;
        So the one used for aligning the secret ring&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self.rings[(self.Sring_idx-1)%3]&lt;br /&gt;
&lt;br /&gt;
    def belowSring(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;The ring below the secret ring (mod 3)&lt;br /&gt;
&lt;br /&gt;
        So the one used for substitution with the secret ring&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self.rings[(self.Sring_idx+1)%3]&lt;br /&gt;
&lt;br /&gt;
    def Mring(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;The message ring&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self.rings[self.Mring_idx]&lt;br /&gt;
&lt;br /&gt;
    def aboveMring(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;The ring above the message ring (mod 3)&lt;br /&gt;
&lt;br /&gt;
        So the one used for aligning the message ring&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self.rings[(self.Sring_idx-1)%3]&lt;br /&gt;
&lt;br /&gt;
    def belowMring(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;The ring below the message ring (mod 3)&lt;br /&gt;
&lt;br /&gt;
        So the one used for substitution with the message ring&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self.rings[(self.Mring_idx+1)%3]&lt;br /&gt;
&lt;br /&gt;
    def step(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Performs one step to encrypt/decrypt&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        self.steps+=1&lt;br /&gt;
        Schar=self.S.pop()&lt;br /&gt;
        self.Shist.push(Schar)&lt;br /&gt;
# Align secret ring with first char of the secret&lt;br /&gt;
        shift=(self.Sring().ord(Schar)-self.aboveSring().ord(&amp;#039;A&amp;#039;))%26&lt;br /&gt;
        self.Sring().rotate(shift)&lt;br /&gt;
# Dots on secret char will indicate the message ring&lt;br /&gt;
        if self.dotmode == 0:&lt;br /&gt;
            # absolute:&lt;br /&gt;
            self.Mring_idx=self.Sring().dot(Schar)&lt;br /&gt;
        elif self.dotmode == 1:&lt;br /&gt;
            # relative:&lt;br /&gt;
            self.Mring_idx=(self.Mring_idx+self.Sring().dot(Schar)-1)%3&lt;br /&gt;
        else:&lt;br /&gt;
            # relative to the other:&lt;br /&gt;
            self.Mring_idx=(self.Sring_idx+self.Sring().dot(Schar)-1)%3&lt;br /&gt;
# Substitute message char&lt;br /&gt;
        if self.mode==0:&lt;br /&gt;
        # encryption&lt;br /&gt;
            Mchar=self.M.pop()&lt;br /&gt;
            self.Mhist.push(Mchar)&lt;br /&gt;
            Cchar=self.belowMring().char(self.Mring().ord(Mchar))&lt;br /&gt;
            self.C.push(Cchar)&lt;br /&gt;
        else:&lt;br /&gt;
        # decryption&lt;br /&gt;
            Cchar=self.C.pop()&lt;br /&gt;
            self.Chist.push(Cchar)&lt;br /&gt;
            Mchar=self.Mring().char(self.belowMring().ord(Cchar))&lt;br /&gt;
            self.M.push(Mchar)&lt;br /&gt;
# Align message ring with first char of the message&lt;br /&gt;
        shift=(self.Mring().ord(Mchar)-self.aboveMring().ord(&amp;#039;A&amp;#039;))%26&lt;br /&gt;
        self.Mring().rotate(shift)&lt;br /&gt;
# Dots on message char will indicate the secret ring&lt;br /&gt;
        if self.dotmode == 0:&lt;br /&gt;
            # absolute:&lt;br /&gt;
            self.Sring_idx=self.Mring().dot(Mchar)&lt;br /&gt;
        elif self.dotmode == 1:&lt;br /&gt;
            # relative:&lt;br /&gt;
            self.Mring_idx=(self.Mring_idx+self.Sring().dot(Schar)-1)%3&lt;br /&gt;
        else:&lt;br /&gt;
            # relative to the other:&lt;br /&gt;
            self.Mring_idx=(self.Sring_idx+self.Sring().dot(Schar)-1)%3&lt;br /&gt;
# Substitute secret char&lt;br /&gt;
        self.S.push(self.belowSring().char(self.Sring().ord(Schar)))&lt;br /&gt;
&lt;br /&gt;
    def run(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Performs the required nr of steps to encrypt/decrypt&lt;br /&gt;
&lt;br /&gt;
        Takes into account the nr of steps already done, if any&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        for i in range(0,self.M.len()+self.C.len()-self.steps):&lt;br /&gt;
            self.step()&lt;br /&gt;
        if self.mode==0:&lt;br /&gt;
            return repr(self.C)&lt;br /&gt;
        else:&lt;br /&gt;
            return repr(self.M)&lt;br /&gt;
&lt;br /&gt;
class string:&lt;br /&gt;
    def __init__(self, string):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Simple string class with operators to queue chars&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        self.it=string.upper().replace(&amp;#039; &amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
    def pop(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Pops out the first char of the string&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        first=self.it[0]&lt;br /&gt;
        self.it=self.it[1:]        &lt;br /&gt;
        return first&lt;br /&gt;
    def push(self, char):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Pushes a char at the end of the string&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        self.it=self.it+char&lt;br /&gt;
    def len(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Returns the length of the string&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return len(self.it)&lt;br /&gt;
    def __repr__(self):&lt;br /&gt;
        return self.it&lt;br /&gt;
&lt;br /&gt;
class ring:&lt;br /&gt;
    def __init__(self, period, shift=0):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Object representing one ring&lt;br /&gt;
        &lt;br /&gt;
        period: when to change dots&lt;br /&gt;
                set to 1 for first ring, 2 for second, 3 for third&lt;br /&gt;
        shift:  initial rotation of the ring, if any, otherwise start&lt;br /&gt;
from &amp;#039;A&amp;#039;&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        self.L=[chr(65+i) for i in range(0,26)]&lt;br /&gt;
        self.D=dict([(chr(65+i),(i//period)%3) for i in range(0,26)])&lt;br /&gt;
        # Trying alternate dots: 0,1,2,0,1,2 / 1,2,0,1,2,0 / 2,0,1,2,0,1&lt;br /&gt;
        # self.D=dict([(chr(65+i),(i+period)%3) for i in range(0,26)])&lt;br /&gt;
        self.rotate(shift)&lt;br /&gt;
    def rotate(self,n):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Rotate the ring towards the left by n&lt;br /&gt;
        &lt;br /&gt;
        So &amp;#039;ABC...&amp;#039; rotated by n=1 becomes &amp;#039;BCD...&amp;#039; &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        self.L.extend(self.L[:n])&lt;br /&gt;
        del self.L[:n]&lt;br /&gt;
    def dot(self, char):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Returns the dot of a char of the ring&lt;br /&gt;
        &lt;br /&gt;
        0 = dot above&lt;br /&gt;
        1 = no dot&lt;br /&gt;
        2 = dot below&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self.D[char]&lt;br /&gt;
    def ord(self, char=&amp;#039;A&amp;#039;):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Returns position of a char, of &amp;#039;A&amp;#039; by default&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self.L.index(char)&lt;br /&gt;
    def char(self, index=0):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Returns the char at a given position, at the first by default&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self.L[index]&lt;br /&gt;
    def __repr__(self):&lt;br /&gt;
        return &amp;#039;&amp;#039;.join(self.L)&lt;br /&gt;
&lt;br /&gt;
def _test():&lt;br /&gt;
    import doctest&lt;br /&gt;
    doctest.testmod()&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    _test()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>PhilippeTeuwen</name></author>
	</entry>
</feed>