ichirin2501's diary

いっちりーん。

シーザー暗号(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の循環出来ないかなぁ。