暗号化ソフトのつくりかた

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者

暗号化ソフトのつくりかた

#1 投稿記事 by »

暗号化形式は、何でもかまいません。

暗号化ソフトの作り方の手順と解説、できればソースコードをお願いします。

暗号化ソフトを作った御方大歓迎です。


できればソースコードをお願いします。
Sunshine

#2 投稿記事 by Sunshine »

 暗号化は文字コードをずらすことによって実現できます。

 例:文字コードを 3 ずらすと、
   "abcdef"が"defghi"になります。

コード: 全て選択

'簡単な暗号(文字コードを3ずらす)
Dim lpstr[10] As Byte
lstrcpy(lpstr, "abcdefghij")

Dim i As Long
For i = 0 To ELM(10)
	lpstr = (lpstr + 3) mod 256
Next


これで、lpstrの文字の内容が全く別の文字列になります。
256の余りを代入しているのは、オーバーフローを防ぐためです。
複合化は、これの逆、上のコードの場合では3を引いてやればいいわけです。

コード: 全て選択

'複合化(文字コードを3ずらす)
Dim lpstr[10] As Byte       '複合化する文字列

Dim i As Long
For i = 0 To ELM(10)
	If lpstr - 3 < 0 Then
		lpstr = 256 - (lpstr - 3)
	Else
		lpstr = lpstr - 3
	End If
Next


もちろん、これは簡単な暗号なので、すぐに破られてしまうことでしょう。
どんな暗号が破られにくいかを、自分でいろいろと試してみてください。
Sunshine

訂正

#3 投稿記事 by Sunshine »

訂正です。

コード: 全て選択

'複合化(文字コードを3ずらす) 
Dim lpstr[10] As Byte       '複合化する文字列 

Dim i As Long 
For i = 0 To ELM(10) 
    If lpstr - 3 < 0 Then 
        lpstr = 256 - (lpstr - 3) 
    Else 
        lpstr = lpstr - 3 
    End If 
Next



lpstr = 256 - (lpstr - 3)

lpstr = 256 + (lpstr - 3)
の間違いでした。すみません。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

3文字ずらすって

#4 投稿記事 by konisi »

3文字ずらすのってたしかシーザー/カエサル(Caesar)暗号ですよね。
僕も少し前暗号化ソフトを作る時に参考にしたので覚えてますが、鍵空間(鍵として考えられる鍵の可能性の数)が8bitととても狭いので、実用的には使い物にはなりません。
でも、応用は出来ます。


①特殊なアルゴリズムで精度の良い擬似乱数を出力
②その数値を使って1バイト暗号化
③アルゴリズムをもう一度動かし、次の擬似乱数を得る
④文字列全体に暗号化がかかるまで②に戻る

とか、ビット関数Xorは二度使うと元の数値に戻る事から、②番の暗号化の方式を足し算引き算ではなくビット関数で行うとか。


というより、僕は暗号化ソフトを作った事があったりします。そしてホームページに載ってたりもします。

http://web1.nazca.co.jp/himajinn13sei/8.zip
(ソースコード含)

403でうまく開けなかったらF5を押してみてください。

分からない部分があったら訊いて下さい。
アルゴリズム本体に対しての詳しい質問はご勘弁^^;
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
返信する