X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=Untitled.ipynb;h=023ad1180d381a33dd19e1c351555557ef524457;hb=fc7d3bca7af9b417238c9a8bd00d1959909896d8;hp=0a8a3e0b4f9d865154fa9fcdb6927cd4f126e672;hpb=a718663ac5643f2ee292a6b5784aa4d4ea95ee17;p=cipher-tools.git diff --git a/Untitled.ipynb b/Untitled.ipynb index 0a8a3e0..023ad11 100644 --- a/Untitled.ipynb +++ b/Untitled.ipynb @@ -2,157 +2,117 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, + "execution_count": 2, + "metadata": {}, "outputs": [], "source": [ - "from enigma import *" + "from support.utilities import *\n", + "from support.language_models import *\n", + "from support.norms import *\n", + "from cipher.keyword_cipher import *" ] }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, + "execution_count": 3, + "metadata": {}, "outputs": [], "source": [ - "e31 = Enigma(reflector_b_spec, \n", - " wheel_i_spec, wheel_i_pegs,\n", - " wheel_v_spec, wheel_v_pegs,\n", - " wheel_iii_spec, wheel_iii_pegs,\n", - " 6, 20, 24, \n", - " 'ua pf rq so ni ey bg hl tx zj')\n" + "def keyword_encipher_p(message, keyword, wrap_alphabet=KeywordWrapAlphabet.from_a):\n", + " cipher_alphabet = keyword_cipher_alphabet_of(keyword, wrap_alphabet)\n", + " cipher_translation = {p: c for p, c in zip(string.ascii_lowercase, cipher_alphabet)}\n", + " return cat(keyword_encipher_letter(letter, cipher_translation) for letter in message)" ] }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, + "execution_count": 8, + "metadata": {}, "outputs": [], "source": [ - "def advance(e, n):\n", - " def print_state(e):\n", - " print(' self.assertEqual(self.enigma31.wheel_positions, {})'.format(e.wheel_positions))\n", - " print(\" self.assertEqual(cat(self.enigma31.wheel_positions_l), '{}')\".format(cat(e.wheel_positions_l)))\n", - " print(' self.assertEqual(self.enigma31.peg_positions, {})'.format(e.peg_positions))\n", - " print()\n", - " \n", - " \n", - " \n", - " print_state(e)\n", - " for i in range(n):\n", - " print(' self.engima31.advance()')\n", - " e.advance()\n", - " print_state(e)\n" + "def keyword_decipher_p(message, keyword, wrap_alphabet=KeywordWrapAlphabet.from_a):\n", + " cipher_alphabet = keyword_cipher_alphabet_of(keyword, wrap_alphabet)\n", + " plaintext_translation = {c: p for p, c in zip(string.ascii_lowercase, cipher_alphabet)}\n", + " return cat(keyword_encipher_letter(letter, plaintext_translation) for letter in message)" ] }, { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, + "outputs": [], + "source": [ + "def keyword_encipher_letter(letter, cipher_translation):\n", + " if letter in cipher_translation:\n", + " return cipher_translation[letter]\n", + " else:\n", + " return letter" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - " self.assertEqual(self.enigma31.wheel_positions, (21, 5, 22))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'ayt')\n", - " self.assertEqual(self.enigma31.peg_positions, ([16], [1], [2]))\n", - "\n", - " self.engima31.advance()\n", - " self.assertEqual(self.enigma31.wheel_positions, (21, 5, 23))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'ayu')\n", - " self.assertEqual(self.enigma31.peg_positions, ([16], [1], [1]))\n", - "\n", - " self.engima31.advance()\n", - " self.assertEqual(self.enigma31.wheel_positions, (21, 5, 24))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'ayv')\n", - " self.assertEqual(self.enigma31.peg_positions, ([16], [1], [0]))\n", - "\n", - " self.engima31.advance()\n", - " self.assertEqual(self.enigma31.wheel_positions, (21, 6, 25))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'azw')\n", - " self.assertEqual(self.enigma31.peg_positions, ([16], [0], [25]))\n", - "\n", - " self.engima31.advance()\n", - " self.assertEqual(self.enigma31.wheel_positions, (22, 7, 0))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bax')\n", - " self.assertEqual(self.enigma31.peg_positions, ([15], [25], [24]))\n", - "\n", - " self.engima31.advance()\n", - " self.assertEqual(self.enigma31.wheel_positions, (22, 7, 1))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bay')\n", - " self.assertEqual(self.enigma31.peg_positions, ([15], [25], [23]))\n", - "\n" - ] + "data": { + "text/plain": [ + "'qopq hoppkdo'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "e31.set_wheels('a', 'y', 't')\n", - "advance(e31, 5)" + "keyword_encipher('test message', 'keyword')" ] }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - " self.assertEqual(self.enigma31.wheel_positions, (21, 6, 21))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'azs')\n", - " self.assertEqual(self.enigma31.peg_positions, ([16], [0], [3]))\n", - "\n", - " self.engima31.advance()\n", - " self.assertEqual(self.enigma31.wheel_positions, (22, 7, 22))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bat')\n", - " self.assertEqual(self.enigma31.peg_positions, ([15], [25], [2]))\n", - "\n", - " self.engima31.advance()\n", - " self.assertEqual(self.enigma31.wheel_positions, (22, 7, 23))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bau')\n", - " self.assertEqual(self.enigma31.peg_positions, ([15], [25], [1]))\n", - "\n", - " self.engima31.advance()\n", - " self.assertEqual(self.enigma31.wheel_positions, (22, 7, 24))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bav')\n", - " self.assertEqual(self.enigma31.peg_positions, ([15], [25], [0]))\n", - "\n", - " self.engima31.advance()\n", - " self.assertEqual(self.enigma31.wheel_positions, (22, 8, 25))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bbw')\n", - " self.assertEqual(self.enigma31.peg_positions, ([15], [24], [25]))\n", - "\n", - " self.engima31.advance()\n", - " self.assertEqual(self.enigma31.wheel_positions, (22, 8, 0))\n", - " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bbx')\n", - " self.assertEqual(self.enigma31.peg_positions, ([15], [24], [24]))\n", - "\n" - ] + "data": { + "text/plain": [ + "'qopq hoppkdo'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "e31.set_wheels('a', 'z', 's')\n", - "advance(e31, 5)" + "keyword_encipher_p('test message', 'keyword')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'test message'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "keyword_decipher_p('qopq hoppkdo', 'keyword')" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [] } @@ -173,9 +133,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1+" + "version": "3.4.5" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 2 }