Jump to content
BudaK-MalaS

Nak Mintak Tolong Pasal C++

Recommended Posts

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++..

Share this post


Link to post
Share on other sites

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..

Share this post


Link to post
Share on other sites

hint:

- nak encrypt: (x+n) mod 26 ; x=char, n = offset

- nak decrypt: (x-n) mod 26

- guna ASCII table:

A-Z: 65-90

a-z: 97-122

spcae: 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 -_-

Share this post


Link to post
Share on other sites

hint:

- nak encrypt: (x+n) mod 26 ; x=char, n = offset

- nak decrypt: (x-n) mod 26

- guna ASCII table:

A-Z: 65-90

a-z: 97-122

spcae: 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..

Share this post


Link to post
Share on other sites

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 :D...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...

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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...:ph34r:

Share this post


Link to post
Share on other sites

#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);

}

Share this post


Link to post
Share on other sites

#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 - 26

sama 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 by betik

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...