Ref<ByteArray> keyExpansion(ByteArray *key, int Nr) { if (Nr <= 0) Nr = numRounds(key->count() / 4); Ref<ByteArray> w = ByteArray::create(Ns * (Nr + 1)); const int Nk = key->count() / 4; int i = 0; for (; i < Nk; ++i) { w->wordAt(i) = word( key->at(4 * i), key->at(4 * i + 1), key->at(4 * i + 2), key->at(4 * i + 3) ); } for (; i < w->count() / 4; ++i) { uint32_t h = w->wordAt(i - 1); if (i % Nk == 0) h = subWord(rotWord(h)) ^ rCon(i / Nk); else if (Nk > 6 && i % Nk == 4) h = subWord(h); w->wordAt(i) = w->wordAt(i - Nk) ^ h; } return w; }
QRectF Cell::boundingRect(void) const { QRectF rCon(FRAME, FRAME, scene()->width() - FRAME * 2, scene()->height() - FRAME * 2); QRectF rCell(0, 0, (rCon.width() - FRAME * 3) / 4, (rCon.width() - FRAME * 3) / 4); return rCell; }