BudaK-MalaS 0 Report post Posted August 21, 2008 sesape dapat bantu aku buatkan coding untuk caesar cipher..?ala...yg plaintext bertukar jadi ciphertext tu..plz...urgent nie...aku nie br jer blaja pasal C++.. Quote Share this post Link to post Share on other sites
otai_g 3 Report post Posted August 21, 2008 apa bnd yg ko tanya ni?x paham aku..ciphertext tu apa?caesar ciphertu apa plk?jgn asume semua org tau apa yg ko tau.. Quote Share this post Link to post Share on other sites
betik 11 Report post Posted August 21, 2008 hint: - nak encrypt: (x+n) mod 26 ; x=char, n = offset- nak decrypt: (x-n) mod 26- guna ASCII table:A-Z: 65-90a-z: 97-122spcae: 32- ditukar kpd C++: encypted char = (char in ASCII + offset) % 26- oleh sebab char A-Z|a-z bkn start ngan 0, so : encypted char = ((char in ASCII + offset - ascii(A|a)) % 26) + ascii(A|a)so, ko bole wat function encrypt n decrypt:cth:string encrypted (string ceasar, int offset){ for (int i=0; i<ceasar.length(); ++i){ if(ceasar[i] != 32) //xyah encrypt whitespace ceasar[i] = ceasar[i] < 91 ? ((ceasar[i]+offset-65) % 26)+65 : ((ceasar[i]+offset-97) % 26)+97; } return ceasar; }ko buat dulu guna hint2 tu...ada problem bole tanya...spood-fed x elok untuk kesihatan...//bantu != buatkan Quote Share this post Link to post Share on other sites
BudaK-MalaS 0 Report post Posted August 26, 2008 hint: - nak encrypt: (x+n) mod 26 ; x=char, n = offset- nak decrypt: (x-n) mod 26- guna ASCII table:A-Z: 65-90a-z: 97-122spcae: 32- ditukar kpd C++: encypted char = (char in ASCII + offset) % 26- oleh sebab char A-Z|a-z bkn start ngan 0, so : encypted char = ((char in ASCII + offset - ascii(A|a)) % 26) + ascii(A|a)so, ko bole wat function encrypt n decrypt:cth:string encrypted (string ceasar, int offset){ for (int i=0; i<ceasar.length(); ++i){ if(ceasar[i] != 32) //xyah encrypt whitespace ceasar[i] = ceasar[i] < 91 ? ((ceasar[i]+offset-65) % 26)+65 : ((ceasar[i]+offset-97) % 26)+97; } return ceasar; }ko buat dulu guna hint2 tu...ada problem bole tanya...spood-fed x elok untuk kesihatan...//bantu != buatkan salam bro..ape kata ko bagi full coding bro..aku xpaham la.. Quote Share this post Link to post Share on other sites
betik 11 Report post Posted August 26, 2008 sori bro...aku rasa tu bukan cara terbaik...k la...aku bg hint lagi...1) amik input dr user: guna getline(cin, strings); atau sewaktu dengannya...2) dapatkan offset..3) kalu dia nak encrypt, ko call function tu dengan menghantar string yg nk di-encrypt dan juga offset dia...oleh ssb funtion tu akan return trus encrypted string, ko bole trus guna masa nk printkan output...4) kalau perlu, limitkan input dari user supaya dia bole masukkan huruf2 dan whitespace shaja..tu je...x susah pon...kalu ko tak paham ternary operator aku guna tu, ko bole tukar kepada if-else yang biasa...tu cuma contoh dr aku sbb aku malas nak taip panjang aritu..tapi cara dia still sama macam hint kat pos sebelum ni...ko try la dulu...kalu x jadi baru pos kat sini tanya apa problem dia...kalu ko tak try dulu, maaf cakap la, aku tak rasa aku akan tolong...sebab pendapat aku, kena ada inisiatif sendiri barulah Malaysia bole maju ...aku tak cakap aku expert, tapi aku sedia tolong kalau ada inisiatif dari orang yang bertanya...//ada lagi kut cara yang lagi mudah dari aku...sebab aku cuma amik rumus ceaser cipher tu dari wikipedia dan tukar kepada C++ je huhu... Quote Share this post Link to post Share on other sites
troikasix 0 Report post Posted August 26, 2008 Nak cipher decipher ni bukan keje senang. Kalau setakat nak encrypt password baik guna hashing trus. MD5 ker,.. Sha1 ker.. Pastu simpan jer hash string tu dalam database. Lagi selamat. kalau ada orang boleh bukak database tengok password pun takleh make sense pasal hash string tu. Quote Share this post Link to post Share on other sites
betik 11 Report post Posted August 27, 2008 aku rasa dia cuma nak belajar C++, bukan nak buat c0ding betul2 untuk encryption...ceaser cipher ni mmg xde security langsung..//md5 x secure...nak buat checksum utk file ok la...SHA2 lagi elok dari SHA1... Quote Share this post Link to post Share on other sites
BudaK-MalaS 0 Report post Posted August 27, 2008 #include <iostream>#include <string.h>using namespace std;void ceaser(char str1[80]){ int i =0; while(i<strlen(str1)){ str1 = int(str1) + 3; i++; } cout << "Ceaser CIPHER :\n\n"; cout << str1<<"\n\n"<<endl;}int main(){ char str1[80]; int i=0; cout << "Enter The Message to Encrypt :\n\n"; cin.get(str1, 80); cout << "\n\n\n"; ceaser(str1); } Quote Share this post Link to post Share on other sites
betik 11 Report post Posted August 28, 2008 (edited) #include <iostream>#include <string.h>using namespace std;<string.h> (ditulis <cstring> dalam C++) bukan string class untuk C++, tapi untuk C(dan hanyalah char array yang banyak kekurangan)...untuk C++, gunakan <string>...tapi dlm c0de tu, takda pun yang guna string class..so bole buang "#inculde <string.h>"while(i<strlen(str1)){ str1 = int(str1) + 3; i++; }kena perhatikan jika char yang dah diubah tu akan melebihi dari z(ascii=122) dan Z(90)...kerana caesar cipher adalah mod 26 (kalu offset = 1, bermkana huruf z septutnya kembali menjadi a, bukan increment ke char ascii seterusnya)ini hanyalah melibatkan matematik: (string yang diubah - (122+1))+97...boleh dipendekkan jadi: string diubah - 26sama sperti untuk huruf besar...so jadi: if((str[i] + offset) > 90 || (str[i] + offset) > 122) str1[i] = str1[i] + offset - 26 else //cipher macam biasa.. edit: ////////////////////////////////////// aku baru perasan..ada error logic kat situ sebab kalau huruf a cthnya, ascii dia akan lebih dr 90 dan akan exceute "str1 = str1 + offset - 26"...so kena ubah sikit... jadi : if ((str1[i]+offset <= 122 && str1[i]+offset >=97) || (str1[i]+offset <=90)) str1[i] = str1[i] + offset; else str1[i] = str1[i] + offset- 26; ////////////////////////////////////////// perhatikan juga whitespace(ascii = 32) kalau user masukkan whitespace, jagan ubah whitespace tersebut.. so tmbh: if(str1[i] != 32) {//lakukan proses cipher} //kalau nak guna function yang saya berikan, cuma gunakn <string> class dan panggil function tu dengan menghantar string dari user dan offset cth: string str1; cout << "Enter The Message to Encrypt : "; getline(cin,str1); cout << "\nCeaser CIPHER : " >> encrypted(str1,3) >>"\n"; Edited August 28, 2008 by betik Quote Share this post Link to post Share on other sites