Exemple #1
0
 public IDEA(BigInteger keyInteger, BigInteger iv) {
   this.keyInteger = keyInteger;
   this.iv = iv;
   BigInteger[] keyArray = Helper.extractValues(keyInteger, 8, 16);
   encKeys = getEncryptionKeys(keyArray);
   decKeys = getDecryptionKeys(encKeys);
 }
Exemple #2
0
  public BigInteger[][] getEncryptionKeys(BigInteger[] keyArray) {
    // String keyString
    BigInteger[] outputArray = new BigInteger[52];

    // BigInteger[] keyArray = Helper.stringToBigIntegerArray(keyString);
    BigInteger key = Helper.bigIntegerArraySum(keyArray, 8);

    BigInteger[] shortKeyArray = Helper.extractValues(key, 16, 8);

    // get keys
    int i = 0;
    while (i != 52) {

      for (int j = 0; j < shortKeyArray.length; j++) {
        BigInteger tmp = shortKeyArray[j];
        outputArray[i++] = tmp;
        if (i == 52) {
          break;
        }
      }

      if (i != 52) {
        key = Helper.shift(key, 16, 25);
        shortKeyArray = Helper.extractValues(key, 16, 8);
      }
    }

    // get as 2d array
    BigInteger[][] nicerArray = new BigInteger[9][6];

    int counter = 0;
    for (int zeile = 0; zeile < nicerArray.length; zeile++) {
      for (int spalte = 0; spalte < nicerArray[zeile].length; spalte++) {
        nicerArray[zeile][spalte] = outputArray[counter++];
        if (counter == 52) {
          return nicerArray;
        }
      }
    }

    return nicerArray;
  }
Exemple #3
0
  public BigInteger idea(BigInteger input, boolean isEncryption) {
    // make 4*16bit block array
    BigInteger[] messagePart = Helper.extractValues(input, 16, 4);

    BigInteger[] key = null;
    for (int round = 0; round < 9; round++) {
      // keys based on encryption or decryption
      if (isEncryption) {
        key = encKeys[round];
      } else {
        key = decKeys[round];
      }

      // encryption/decryption
      messagePart = feistelNetwork(messagePart, key, round);
    }

    // from 4*16bit block array to one biginteger
    BigInteger output = Helper.bigIntegerArraySum(messagePart, 16);

    return output;
  }