Esempio n. 1
0
  public static <A> VigenereKey<A> invertKey(
      VigenereKey<A> key, Alphabet<? extends A> basicAlphabet) {
    List<Integer> numberKey = key.getKeyAsNumberList();
    int[] invKey = new int[numberKey.size()];
    int alphaSize = basicAlphabet.getContent().size();
    int counter = 0;
    for (Integer keyElement : numberKey) {
      invKey[counter] = (alphaSize - keyElement) % alphaSize;
      counter++;
    }

    return new VigenereKey<A>(invKey, basicAlphabet);
  }
Esempio n. 2
0
  @Override
  public List<A> encrypt(List<? extends A> plainText, VigenereKey<A> key)
      throws ElementNotInAlphabetException {
    List<A> chiffre = new LinkedList<A>();
    List<Integer> intKey = key.getKeyAsNumberList();
    int counter = 0;
    for (A plainTextElement : plainText) {
      if (!getPlainTextAlphabet().getContent().contains(plainTextElement)) {
        throw new ElementNotInAlphabetException();
      }
      chiffre.add(
          rotateElementAgainstAlphabet(
              plainTextElement, intKey.get(counter % intKey.size()), this.getPlainTextAlphabet()));
      counter++;
    }

    return chiffre;
  }