有一種方式是使用金鑰進行加密的方法,就是對明文的每個字元使用金鑰上對應的密碼進行加密,最終得到密文
例如明文是abcde,金鑰是234,那麼加密方法就是a對應金鑰的2,也就是a偏移2位轉化為c;明文b對應金鑰的3,就是b偏移3位轉化為e,同理c偏移4位轉化為g。這時候金鑰已經使用完,那麼又重頭開始使用。因此明文的d對應金鑰的2,轉化為f,明文的e對應金鑰的3轉化為h。所以明文abcde,金鑰234,經過加密後得到密文是cegfh。
如果字母偏移的位數超過26個字母範圍,則迴圈偏移,例如字母z偏移2位,就是轉化為b,同理字母x偏移5位就是轉化為c
要求:使用三個指標p、q、s分別指向明文、金鑰和密文,然後使用指標p和q來訪問每個位置的字元,進行加密得到密文儲存在指標s指向的位置。
除了變數定義和輸入資料,其他過程都不能使用陣列下標法,必須使用三個指標來訪問明文、金鑰和密文。
//明文、金鑰、密文
char *p,*q,*s;
int lenp=getstrlen(p);
int lenq=getstrlen(q);
//122:z / 97:a / 90:z / 65:a / 48:0
for(int i=0;i122)
//取餘得到超出的部分再加上第乙個字母
*(s+i)=97+(*p+*q-48)%123;
//沒有超出的直接相加即可
else if((*p+*q-48)>96)
*(s+i)=*p+(*q-48);
//處理大寫字母同上
else if((*p+*q-48)>90)
*(s+i)=65+(*p+*q-48)%91;
else
*(s+i)=*p+(*q-48);
//金鑰也要迴圈偏移
q=b+(i+1)%lenq;
}*(s+lenp)='\0';
金鑰加密法(指標應用)
題目描述 有一種方式是使用金鑰進行加密的方法,就是對明文的每個字元使用金鑰上對應的密碼進行加密,最終得到密文 例如明文是abcde,金鑰是234,那麼加密方法就是a對應金鑰的2,也就是a偏移2位轉化為c 明文b對應金鑰的3,就是b偏移3位轉化為e,同理c偏移4位轉化為g。這時候金鑰已經使用完,那麼又...
金鑰加密法(指標應用)
題目描述 有一種方式是使用金鑰進行加密的方法,就是對明文的每個字元使用金鑰上對應的密碼進行加密,最終得到密文 例如明文是abcde,金鑰是234,那麼加密方法就是a對應金鑰的2,也就是a偏移2位轉化為c 明文b對應金鑰的3,就是b偏移3位轉化為e,同理c偏移4位轉化為g。這時候金鑰已經使用完,那麼又...
問題 C 金鑰加密法(指標應用)
時間限制 1 sec 記憶體限制 128 mb 提交 339 解決 252 提交 狀態 討論版 有一種方式是使用金鑰進行加密的方法,就是對明文的每個字元使用金鑰上對應的密碼進行加密,最終得到密文 例如明文是abcde,金鑰是234,那麼加密方法就是a對應金鑰的2,也就是a偏移2位轉化為c 明文b對應...