Perl PHP

2013年11月13日 at 2:30 AM

MD5で暗号化された値を複号化する方法 Perl/PHP

一方向暗号化であるMD5によるエンコードは破れないといいますが、結果のハッシュ値データから逆検索することで解析できます。

意外に以下PHPコードのようなことをして暗号化しているケースが多いためです。

 

 

$str = “abcde”;

print “md5 : ” . md5( $str ) . “\n”;

 

 

 

Perlだと・・・

#!/usr/bin/perl
use strict;
use Digest::MD5;
my $str = 'abcde';
print “md5 : ” . Digest::MD5->new->add("$str")->hexdigest . "\n";
exit;

 

 

 

#!/usr/bin/perl
use strict;

use Digest::MD5 qw/md5_hex/;

my $str = 'abcde';

my $md5 = md5_hex( $str );

print ”md5:” . $md5;

 

 

 

これで終わりだと、暗号化前後の紐づけが判別しやすいためあまり意味がありません。

キーを元に暗号化するようにします。

 

 

 



◆PHPで暗号化/複号化

2013/5/22 favotite Labo PHPで可逆暗号化

 

以下ピンク文字が必要。複号化した際に後部に不必要な文字列が入っているのでカットする。

 

    //暗号化&復号化キー
    $str = "暗号化テスト";
    $key = md5('HF6F4K85');

    //暗号化モジュール使用開始
    $td  = mcrypt_module_open('des', '', 'ecb', '');
    $key = substr($key, 0, mcrypt_enc_get_key_size($td));
    $iv  = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

    //暗号化モジュール初期化
    if (mcrypt_generic_init($td, $key, $iv) < 0) {
        exit('error.');
    }

    //データを暗号化
    $enc_str = base64_encode(mcrypt_generic($td, $str));

    //データを復号化
    $dec_str = mdecrypt_generic($td, base64_decode($enc_str));
    $dec_str = rtrim($dec_url); // 余計な文字を消す

    //暗号化モジュール使用終了
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);

 

 

◆Perlで暗号化/複号化

cryptのようにsalt(種)を仕込みます。

KENTWeb暗号入門 – Perlで暗号化

 

 

 

◆一番初めに記載した方法で暗号化されたデータを類推する方法

Perlの場合、「Digest MD5 Reverse」というモジュールが出ているので、これを使います。

オンライン上のハッシュデータベースから逆引きで値を探すという仕組みになっています。

 

 

#!/usr/local/bin/perl
use strict;
use warnings;
# MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
use Digest::MD5::Reverse qw(r_md5_hex);
my $md5 = '0cc175b9c0f1b6a831c399e269772661';
my $text = r_md5_hex ($md5);
print 'Data is ', $text, "\n";

 

 

そんなツールを実際Webツールで提供されている方も色々いらっしゃいます

http://www.kiyori.co.jp/MD5Reverse/Default.aspx

3 Comments

  1. 複合、ではなく、復号、ではないですか?

  2. ありがとうございます!

    盛大に複数個所誤ってましたね><

  3. 8946というサイトで遊んでいたところこのMD5という暗号復号に行き着きました。そのサイトはページソースからIDやパスワード抜くというものですがそもそも、MD5で複合するとかBASE64で復号するとかソースからは読み取れないものなんでしょうか?また、特殊なソフトが必要なんでしょうか?こちらは、Chrome osのパソコンでChrome上でページのソースを表示から見ています。よろしくお願いします。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



こちらの関連記事もオススメ!