Top Qs
Timeline
Obrolan
Perspektif

MixColumns Rijndael

Dari Wikipedia, ensiklopedia bebas

Remove ads

Langkah MixColumns dan langkah ShiftRows adalah sumber penghamburan utama dalam penyandian Rijndael. Tiap kolom dianggap sebagai suku banyak berderajat empat yang suku-sukunya berada dalam .

Tiap kolom dikali dengan suku banyak tetap modulus . Inversi suku banyaknya adalah .

Remove ads

MixColumns

Ringkasan
Perspektif

Operasi ini terdiri dari perkalian modulus dua suku banyak berderajat empat yang koefisiennya ada dalam . Pembagi yang dipakai dalam operasi ini adalah .

Koefisien suku banyak pertama didefinisikan sebagai kolom status yang berisi empat bita. Tiap bita adalah koefisien dari suku banyak tersebut.

Suku banyak kedua adalah suku banyak tetap . Koefisiennya juga ada dalam . Inversinya adalah .

Dalam halaman ini, kita definisikan beberapa notasi berikut:

berarti perkalian modulus .
berarti pertambahan dalam .
berarti perkalian dalam .

Pertambahan dalam memiliki sifat berikut:

Remove ads

Pembuktian bentuk matriks

Ringkasan
Perspektif

Suku banyak akan dinyatakan sebagai .

Perkalian suku banyak

dengan

Reduksi modulus

Hasil adalah suku banyak berderajat tujuh sehingga harus direduksi menjadi kata empat bita. Hal itu dilakukan dengan melakukan perkalian dengan modulus .

Bila kita melakukan perkalian modulus suku banyak, kita bisa lihat bahwa

Secara umum, kita bisa nyatakan bahwa

Jadi,

dengan

Bentuk matriks

Koefisien , , , dan dapat dinyatakan sebagai berikut:

Ketika kita ganti koefisien dengan tetapan yang dipakai oleh penyandian ini, kita dapatkan hasil berikut:

Hal ini menunjukkan bahwa operasi ini mirip dengan sandi Hill. Ia dapat digambarkan sebagai perkalian matriks berikut:

Remove ads

InverseMixColumns

Ringkasan
Perspektif

Operasi MixColumns memiliki inversi berikut (bilangan dalam desimal).

atau

Remove ads

Contoh implementasi

Ringkasan
Perspektif

Operasi ini dapat disederhanakan dalam implementasinya dengan mengganti perkalian dengan dua dengan geseran tunggal dan XOR bersyarat serta mengganti perkalian dengan tiga dengan perkalian dengan dua yang digabung dengan XOR. Berikut contoh implementasi dalam bahasa C.

void gmix_column(unsigned char *r) {
	unsigned char a[4];
	unsigned char b[4];
	unsigned char c;
	unsigned char h;
	/* Larik a adalah salinan dari larik r.
	 * Larik b adalah larik a yang dikali dua dalam medan berhingga Rijndael.
	 * a[n] ^ b[n] adalah perkalian dengan tiga dalam medan berhingga Rijndael.
	 */
	for (c = 0; c < 4; c++) {
		a[c] = r[c];
		/* h adalah 0xff jika bit tinggi r[c] diatur; nilainya 0 jika tidak */
		h = (unsigned char) ((signed char) r[c] >> 7); /* geseran aritmetika kanan */
		b[c] = r[c] << 1; /* secara tersirat menghapus bit tinggi karena b[c] adalah char 8 bit,
		                   * maka di-XOR dengan 0x1B dan bukan 0x11B pada baris selanjutnya */
		b[c] ^= 0x1B & h; /* medan berhingga Rijndael */
	}
	r[0] = b[0] ^ a[3] ^ a[2] ^ b[1] ^ a[1]; /* 2 * a0 + a3 + a2 + 3 * a1 */
	r[1] = b[1] ^ a[0] ^ a[3] ^ b[2] ^ a[2]; /* 2 * a1 + a0 + a3 + 3 * a2 */
	r[2] = b[2] ^ a[1] ^ a[0] ^ b[3] ^ a[3]; /* 2 * a2 + a1 + a0 + 3 * a3 */
	r[3] = b[3] ^ a[2] ^ a[1] ^ b[0] ^ a[0]; /* 2 * a3 + a2 + a1 + 3 * a0 */
}
Remove ads

Vektor uji untuk MixColumns

Informasi lebih lanjut Heksadesimal, Desimal ...
Remove ads

Daftar pustaka

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads