• 締切済み

c言語での暗号

先日友人からc言語で暗号が作れるという話をききました シーザー暗号なんかもすごい興味深いなと思いました でも3文字ずらす(合ってましたっけ)程度じゃすぐ解読されちゃうと思うんですよね そこで思ったのですが 何文字目は何文字ずらすみたいな暗号プログラムは作れたりするのでしょうか? たとえば「goo」だったら 1文字目のgは1文字ずらしてh 2文字目のoは2文字ずらしてq 3文字目のoは3文字ずらしてr 「goo→hqr」といったような感じです。(zはaに戻るとします 「zzz→abc」) 調べてみたのですが http://okwave.jp/qa/q3483673.html は可能だったのでうまく応用すればできるのかなと思いました。 実は友人はまだc言語習いたてみたいで、わからないといっていたのでここで質問させていただきました。 もしよろしければそのプログラムを教えていただけないでしょうか。

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

その質問のものは 「N文字目はNずらす」というものですから、「N文字目はmずらす」にすればいいわけです。 そのURLの#3のプログラムで c += n + 1; となっているところが 「N文字目はNずらす」の処理ですから、 m = なんかの計算か、テーブル参照結果 ; c += m ; という風にします。 例えば、元のURLにある「N文字目はNずらす」だったら m = n + 1 ; です。 # このプログラム中ではnは0から始まるので、N文字目=(n+1)文字目になる このプログラム自体は、非常に簡単なものです。 勉強中ということなので、ヒントだけに留めます。(ほとんど答えとも言えますが)

healthewo
質問者

お礼

すいません、charを使わないでというのは間違えました。

healthewo
質問者

補足

早いご回答ありがとうございます。 申し訳ありませんが、うまく機能しないみたいです。 charを使わないで使う方法ってありませんか? URLの中にはcharを使ってないものもあったと思います。

関連するQ&A

  • プログラミング シーザー暗号 複合化 C言語

    プログラミング シーザー暗号 複合化 Linux C言語 シーザー暗号を複合化するプログラムを教えてください! 大文字と小文字が混合の文字列で3つずらして複合化したいです 文字数が28字などでは収まらないくらいあります それをふまえたプログラムを教えてください よろしくお願いします

  • シーザー暗号

    シーザー暗号を解読するプログラムを作るのですが、そもそもプログラムをつくる前に課題のSURJUDPが何文字前後にずらしてるのかわかりません。 どなたか解読いただけないでしょうか。

  • c言語 暗号化のプログラム

    大文字アルファベットの文字列を暗号化するプログラムを作りたいのですが、どうやったら暗号化するのかわかりません。 暗号化は文字をずらして行います。 ABC→BDF Aは1文字目なので一文字ずらしてB Bは2文字目なので二文字ずらしてD Cは3文字目なので三文字ずらしてF わからないのは文字のをどうやってずらすのかです。 ヒントだけでもいいので・・・

  • C言語 暗号化について

    暗号化について勉強しているのですが、奇数文字+1、偶数文字-1にするときは、#include <stdio.h> #include <stdlib.h> #include <ctype.h> char myislower(char c) { if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')){ if(c % 2 == 1){ c = c+1; }else{ c = c-1; } } return c; } このプログラムでやりたいのですが、エントリーポイントを定義しなければなりません、とエラーがででしまいます。どうしたらいいでしょうか?

  • C言語で簡単暗号

    C言語を初めてけっこう立つんですが。 自分なりにソフトを作ってみました 暗号化、解読ができるソフトです 1.暗号化 2.解読 3.Quit ソースは #include <stdio.h> int main(void) { int i; char da; back: modo: do{ printf("1.angouka\n"); printf("2.kaidoku\n"); printf("3.Quit\n"); scanf("%d",&i); }while(i<1 || i>3); if(i==1){ da=getchar(); while(da){ printf("%c",da+1); da=getchar(); if(da=='.'){ goto modo; } } } else if(i==2){ da=getchar(); while(da){ printf("%c",da-1); da=getchar(); if(da=='.'){ goto back; } } } return 0; } なんですが。感想などここはこうした方が良いなどと教えてもらいたいんですが。 もっと簡潔にかけて破かれにくい暗号を書くにはどうしたらいいでしょう 教えて下さい

  • C言語のプログラミングについて

    C言語のプログラミングについて プログラミング初心者です。下のプログラムに詰まりました。 下のプログラムをfgets()、atoi()の組とgetchar()を用いて表示するにはどのようなプログラムを書けばよろしいのでしょうか? % ./descending 正の整数: 10 英文字: z 1: z 2: y 3: x 4: w 5: v 6: u 7: t 8: s 9: r 10: q %

  • ASP(+COM)で使用できる、暗号化・暗号解読ツールってありますか

    ASP(+COM)で使用できる、暗号化・暗号解読ツールってありますか? BASP21で暗号化するメソッドがあったのですが、暗号は出来ても解読は不可能でした(MD5メソッド)。 上記のような暗号化・解読の機能を満たしたBASP21のようなツールは存在するのでしょうか。 実績がある方のみご教授ください。 宜しくお願いします。 暗号化する文字列。 a~z,A~Z,0~9 のみです。

  • C言語 暗号化プログラムの作成

    アルファベット文字列を暗号化するプログラムを作りたいのですが、暗号化の方法がわかりません。 暗号化は、アルファベット文字列を入力した後、数字を入力して、その数字分文字をずらすというものです。 例:"Date 5"⇒"Ifyj 5" (Dの5個先はIなのでIとする。 同様にa⇒f    t⇒y    e⇒j) "Take 20"⇒"Muey 20" (Zを過ぎたらまたAからずらしていく。)

  • 暗号

    たとえば、a=1,b=2,c=3,・・・というような法則で、何かしら意味のある、十分な量の機密文書を暗号化するとします。 第三者がこの文書を発見し、解読しようとする場合、コンピューターを用いれば解読するのは比較的容易に思われます。 では仮に、完全にランダムな文字10000文字ほどを暗号化した場合、その文字を原文を知らない第三者が複合化するのは可能でしょうか? (解読に用いるコンピューターは無限に早い処理速度を持っているとします。)

  • C言語、リダイレクト

    C言語の初心者です。 コマンドプロンプトで「./a.out <text.txt」とうつと、text.txtのデータを取得し、表示するプログラムをつくろうと思っています。 試行錯誤の結果 #include <stdio.h> main(){ char abc; scanf("%s",&abc); printf("%c",abc); } だとエラーもなくコンパイルできるのですが、肝心のファイルの中身が一文字までしか表示されません。 これはchar abcでabcを一文字だけの変数にしているからみたいですが、調べてみたのですがどうもここから先に進めません。 どこをどのように変えれば良いですか?お願いします。

専門家に質問してみよう