コード例 #1
0
ファイル: Aes.cpp プロジェクト: frankencode/fluxkit
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;
}
コード例 #2
0
ファイル: cell.cpp プロジェクト: zhiyb/2048
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;
}