hcrypto.analyzer
Class VigenereAnalyzer

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--java.awt.Window
                    |
                    +--java.awt.Frame
                          |
                          +--hcrypto.analyzer.AnalyzerFrame
                                |
                                +--hcrypto.analyzer.VigenereAnalyzer
All Implemented Interfaces:
javax.accessibility.Accessible, Analyzer, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class VigenereAnalyzer
extends AnalyzerFrame
implements Analyzer

See Also:
Serialized Form

Inner classes inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Inner classes inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent
 
Field Summary
protected  int[][] contacts
           
protected  int[] kasiskiFactors
           
protected  int keywordLengthEstKasiski
           
protected  int keywordLengthEstStat
           
static int MAX_BIGRAMS
           
static int MAX_CONTACT
           
static int MAX_FACTORS
           
static int MAX_KEYWORD
           
protected  int nRepeatedBigrams
           
protected  int nSuperDisplacements
           
protected  int[] superDispl
           
protected  int[] superFactors
           
static double SUPERPOSNUMBER
           
 
Fields inherited from class hcrypto.analyzer.AnalyzerFrame
display, HEIGHT, WIDTH
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface hcrypto.analyzer.Analyzer
DECIPHER_LIMIT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, PROPERTIES, SOMEBITS
 
Constructor Summary
VigenereAnalyzer()
           
VigenereAnalyzer(TextStatistics ts)
           
 
Method Summary
 void computeBigramDistances(java.lang.String s)
           
protected  java.lang.String computeFactors(int[] factors, int displ)
           
 void computeSuperpositionAnalysis(java.lang.String s)
          This method performs a superposition test.
 void doAnalysis()
           
 java.lang.String estimateKeyword(int keyLen)
          To find the find the keyword we break the cryptogram into keyLen monoalphabetic cryptograms, each of which is obtained by a Caesar shift from the standard alphabet.
 int estimateKeywordLength(int[] factors)
           
 int getOptimalShift(int firstChar, int displ)
          This method performs a Chi-Square test to find the optimal Caesar shift on a polyalphabetic text.
 java.lang.String getReport()
           
protected  void insertBigram(char ch1, char ch2, int displ)
          This method inserts a bigram into a table of repeated bigrams where ch1 is the first character of the bigram, ch2 is the second character, and displ is the displacement from the previous occurrence of this bigram.
protected  java.lang.String retrieveBigram(int k)
          This method retieves the kth bigram from the table of repeated bigrams.
 void run()
           
 void setup(java.lang.String s)
           
 
Methods inherited from class hcrypto.analyzer.AnalyzerFrame
buildGUI, centerWindow
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getAccessibleContext, getCursorType, getFrames, getIconImage, getMenuBar, getState, getTitle, isResizable, paramString, remove, removeNotify, setCursor, setIconImage, setMenuBar, setResizable, setState, setTitle
 
Methods inherited from class java.awt.Window
addWindowListener, applyResourceBundle, applyResourceBundle, dispose, getFocusOwner, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getOwnedWindows, getOwner, getToolkit, getWarningString, hide, isShowing, pack, postEvent, processEvent, processWindowEvent, removeWindowListener, setCursor, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, remove, removeAll, removeContainerListener, setFont, setLayout, update, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addPropertyChangeListener, addPropertyChangeListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getInputMethodRequests, getLocation, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isDisplayable, isDoubleBuffered, isEnabled, isFocusTraversable, isLightweight, isOpaque, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setForeground, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

MAX_BIGRAMS

public static final int MAX_BIGRAMS

MAX_FACTORS

public static final int MAX_FACTORS

MAX_KEYWORD

public static final int MAX_KEYWORD

MAX_CONTACT

public static final int MAX_CONTACT

SUPERPOSNUMBER

public static final double SUPERPOSNUMBER

contacts

protected int[][] contacts

keywordLengthEstStat

protected int keywordLengthEstStat

keywordLengthEstKasiski

protected int keywordLengthEstKasiski

nRepeatedBigrams

protected int nRepeatedBigrams

nSuperDisplacements

protected int nSuperDisplacements

kasiskiFactors

protected int[] kasiskiFactors

superFactors

protected int[] superFactors

superDispl

protected int[] superDispl
Constructor Detail

VigenereAnalyzer

public VigenereAnalyzer()

VigenereAnalyzer

public VigenereAnalyzer(TextStatistics ts)
                 throws java.lang.NullPointerException
Method Detail

setup

public void setup(java.lang.String s)
Specified by:
setup in interface Analyzer

run

public void run()
Specified by:
run in interface Analyzer

getReport

public java.lang.String getReport()
Specified by:
getReport in interface Analyzer

insertBigram

protected void insertBigram(char ch1,
                            char ch2,
                            int displ)
This method inserts a bigram into a table of repeated bigrams where ch1 is the first character of the bigram, ch2 is the second character, and displ is the displacement from the previous occurrence of this bigram.

retrieveBigram

protected java.lang.String retrieveBigram(int k)
This method retieves the kth bigram from the table of repeated bigrams.

computeSuperpositionAnalysis

public void computeSuperpositionAnalysis(java.lang.String s)
This method performs a superposition test. It places the original text on one line and superposes a copy of the text, displaced by 1..MAX_KEYWORD positions, under the original text. Then it computes the number of coincidences that result between the two lines.

computeBigramDistances

public void computeBigramDistances(java.lang.String s)

doAnalysis

public void doAnalysis()

estimateKeywordLength

public int estimateKeywordLength(int[] factors)

estimateKeyword

public java.lang.String estimateKeyword(int keyLen)
To find the find the keyword we break the cryptogram into keyLen monoalphabetic cryptograms, each of which is obtained by a Caesar shift from the standard alphabet. So for each letter in the keyword, find its shift.

computeFactors

protected java.lang.String computeFactors(int[] factors,
                                          int displ)

getOptimalShift

public int getOptimalShift(int firstChar,
                           int displ)
This method performs a Chi-Square test to find the optimal Caesar shift on a polyalphabetic text. It assumes that every _displ_ character starting at _firstChar_ belongs to the same alphabet. It is used primarily for analyzing Vigenere-like and Caesar-shift cryptograms.
Parameters:
firstChar - - the location of the first character in the cryptotext
displ - - the displacement (keyword length) or cycle length