Konten dihapus Konten ditambahkan
Bilalbudiluhur (bicara | kontrib)
RC4: bagian baru
Tag: Suntingan visualeditor-wikitext
 
Bilalbudiluhur (bicara | kontrib)
Tag: Suntingan visualeditor-wikitext
Baris 12:
= Implementasi dari Algoritma RC4 =
 
Banyak stream cipher dibuat berdasarkan LinearFeedback Shift Registers (LFSRs) yang efisien diperangkat keras namun kurang efisien dalam perangkatlunak. Desain dari RC4 menghindari penggunaan LFSRs,dan algoritma ini ideal untuk implementasi perangkatlunak karena hanya menggunakan manipulasi byte.Algoritma ini menggunakan 256 byte memori untukkunci, yaitu key[0] sampai key[k-1], dan variabel integer i, j, dan y. Reduksi modular dari beberapa nilai modulo256 dapat dilakukan dengan sebuah bitwise AND dengan 255 (yang ekuivalen untuk mengambil byte dengan orderendah dari nilai di pertanyaan).Berikut ini adalah implementasinya dalam bahasa C.
www
 
unsignedcharS[256];
unsignedinti,j;
voidswap(unsignedchar*s,unsignedinti,unsignedintj){
unsignedchartemp =s[i];
s[i]=s[j];
s[j]=temp;}
/* KSA */
voidrc4_init(unsignedchar*key,
unsignedintkey_length){
for(i =0;i <256;i++)
S[i]=i; for(i =j =0;i <256;i++){
j =(j +key[i %key_length]+S[i])&255;
swap(S,i,j); } i =j =0;}
 
/* PRGA */
unsignedcharrc4_output(){
i =(i +1)&255;
j =(j +S[i])&255;
swap(S,i,j);
returnS[(S[i]+S[j])&255];
}
 
#include <stdio.h>
 
intmain(){
intk,output_length;
unsignedcharkey[]="Secret";
// key hardcoded to "Secret" output_length =10;
// number of bytes of output desired rc4_init(key,6);
// length of key is 6 in this case k =0;
while(k <output_length){ printf("%c",rc4_output());
k++;
}}