シーザー暗号(Caesar cipher)
DES暗号アルゴリズムをやるつもりだったけど、目に入ったシーザー暗号を組んでみた。
数字と英文字しか対応してない上に、区分けしてずらしているという残念なコード。
main() { int n,i,e; unsigned char str[1<<10]; printf("input_data:"); gets(str); printf("Encrypt:1\nDecrypt:2\n:"); scanf("%d",&n); printf("zurasu_count:"); scanf("%d",&e); if(n==1){//ango for(i=0;i<strlen(str);i++){ str[i]=isupper(str[i])?str[i]%(91-e)%(65-e)+65: islower(str[i])?str[i]%(123-e)%(97-e)+97:str[i]%(58-e)%(48-e)+48; } }else if(n==2){//hukugo for(i=0;i<strlen(str);i++){ str[i]=isupper(str[i])?str[i]%(65+e)%(39+e)+65: islower(str[i])?str[i]%(97+e)%(71+e)+97:str[i]%(48+e)%(38+e)+48; } } printf("output_data:"); puts(str); }
す ご く 汚 い wwww
ずらす数を間違えるとバグるというおまけつき。
なんかこう…一発で0-9a-zA-Zの循環出来ないかなぁ。