Image     Buku Tamu   Humor    Buku Tamu   Site Map

21 Mar 2010

Algoritma enkripsi SEAL

SEAL Terlebih dulu diperkenalkan oleh Rogaway dan Copper smith sebagai perangkat lunak yang cepat berorientasi algoritma enkripsi. Ini adalah pseudo -
fungsi acak yang membentang indeks singkat menjadi lebih lama pseudorandom string di bawah kontrol sebuah kunci rahasia pra-diproses menjadi internal tabel.
Sebenarnya ini bukan algoritma murni , ini adalah source code dari program menggunakan enkripsi metode SEAL



#define ALG_OK 0
#define ALG_NOTOK 1
#define WORDS_PER_SEAL_CALL 1024

typedef struct {
unsigned long t[520]; /* rounded up to multiple of 5 + 5 */
unsigned long s[265]; /* rounded up to multiple of 5 + 5 */
unsigned long r[20]; /* reounded up to multiple of 5 * */
unsigned long counter; /* 32 bit synch value */
unsigned long ks_buf[WORD_PERSEAL_CALL];
int ks_pos;
} seal_ctx;

#define ROT2(x) (((x) >> 2) | ((x) <<>> 9) | ((x) <<>> 8) | ((x) <<>> 16) | ((x) <<>> 24) | ((x) <<>> 27) | ((x) <<>> 24) | ((cp[1]) << kp =" in;" h0 =" WORD(kp);" h1 =" WORD(kp);" h2 =" WORD(kp);" h3 =" WORD(kp);" h4 =" WORD(kp);" i="1;" i="16;" a="h0;" b="h1;" c="h2;" d="h3;" e="h4;" i="0;" temp =" ROT27(a)" e =" d;" d =" c;" c =" ROT2(b);" b =" a;" a =" temp;" i="20;" temp =" ROT27(a)" e =" d;" d =" c;" c =" ROT2(b);" b =" a;" a =" temp;" i="40;" temp =" ROT27(a)" e =" d;" d =" c;" c =" ROT2(b);" b =" a;" a =" temp;" i="60;" temp =" ROT27(a)" e =" d;" d =" c;" c =" ROT2(b);" b =" a;" a =" temp;" i="0;">t[i]));
g(key,510 / 5,h);

for (i=510; i<>s[i] = h[i-512];

for (i=4;i<254; i="254;i<256;">s[i]=h[i-254];
g(key,(-2+0x2000)/5,h));

for (i=0;i<3;>r[i]=h[i+2];
g(key,(i+0x2000)/5,&(result->r[i]));

for (i=3;i<13;>r[i]));
g(key, (13+0x2000)/5,h);

for (i=13;i<16;>r[i]=h[i-3];
return (ALG_OK);
}


int seal (seal_ctx *key, unsigned long long in, unsigned long *out)
{
int i;
int j;
int l;
unsigned long a;
unsigned long b;
unsigned long c;
unsigned long d;
unsigned short p;
unsigned short q;
unsigned long n1;
unsigned long n2;
unsigned long n3;
unsigned long n4;


wp = out;

for (l=0; l <4; a =" in"> r[4*l+1];
b = ROT8(in) ^ key-> r[4*l+1];
c = ROT16(in) ^ key-> r[4*l+2];
d = ROT24(in) ^ key-> r[4*l+3];

for (j=0; j<2;j++) p =" a">t[p/4];
a = ROT9(a);

p = b & 0x7fc;
c += key->t[p/4];
b = ROT9(b);

p = c & 0x7fc;
d += key->t[p/4];
c = ROT9(c);

p = d & 0x7fc;
a += key->t[p/4];
d = ROT9(d);
}

n1=d;
n2=b;
n3=a;
n4=c;

p = a & 0x7fc;
b += key->t[p/4];
a = ROT9(a);

p = b & 0x7fc;
c += key->t[p/4];
b = ROT9(b);

p = c & 0x7fc;
d += key->t[p/4];
c = ROT9(c);

p = d & 0x7fc;
a += key->t[p/4];
d = ROT9(d);


/* generate 64 key 32 bit atau 256 byte of keystream */

for (i=0; i<64; p="a">t[p/4]
a = ROT9(a);
b^=a;

q=b & 0x7fc;
c ^= key->t[q/4]
b = ROT9(b);
c+=b;

p=(p+c)& 0x7fc;
d += key->t[p/4]
c = ROT9(c);
d^=c;

q=(q+d) & 0x7fc;
a ^= key->t[p/4]
d = ROT9(a);
a+=d;

p=(p+a) & 0x7fc;
b ^= key->t[p/4]
a = ROT9(a);

q=(q+b) & 0x7fc;
c += key->t[p/4]
b = ROT9(b);

p=(p+c)& 0x7fc;
d ^= key->t[p/4]
c = ROT9(c);

q=(q+d)& 0x7fc;
a += key->t[p/4]
d = ROT9(d);

*wp=b+key->s[4*1];
wp++;
*wp=c^key->s[4*i+1];
wp++;
*wp=d+key->s[4*i+2];
wp++;
*wp=a^key->s[4*i+3];
wp++;

if (i & l)
{
a+=n3;
c+=n4;
}
else
{
a+=n1;
c+=n2;
}
}
return (ALG_OK);
}

void seal_refill_buffer(seal_ctx*c){
seal(c,c->counter,c->ks_buf);
c->counter++;
c->ks_pos=0;

* masih banyak neh ...
untuk versi pdf ada di sini dan kalau doc ada di di sini
karena capek dan harus kerja maka pengetikan di hentikan dulu , ya kalau-kalau ada yang mau mensponsori aku sangat berterima kasih .. hehe .. maklum lah .. harus survive.. kan gitu .. lain kali di lanjut lagi

2 komentar:

  1. kalau tau source code lengkapnya dmn gan? mohon bimbingannya, info tentang algoritma seal ini sumbernya dari mana?

    BalasHapus

Tinggalkan Komentar :