locked
文字列の暗号化について

    質問

  • 暗号化について教えてください。

     

    現在、HP-UX上のC言語プログラムで、crypt関数というものを使用して文字列をDES暗号化しています。(下記例:文字列="password" キー="aa")

     

        char *aftpas

        aftpas = crypt("password", "aa");

        printf("暗号化後:%s\n", aftpas);

     

        <実行結果>

          暗号化後:aajfMKNH1hTm2

     

    そこで、Windows2000サーバ上で、同じ文字列をDES暗号化して、HP-UXでDES暗号化したものと同じ結果(上記例:aajfMKNH1hTm2)を得たいと思っております。

    プログラムやコマンド等でDES暗号化を行う手段はありますでしょうか?

    2008年4月18日 5:46

回答

  •  慶次郎 さんからの引用

    暗号化について教えてください。

    そこで、Windows2000サーバ上で、同じ文字列をDES暗号化して、HP-UXでDES暗号化したものと同じ結果(上記例:aajfMKNH1hTm2)を得たいと思っております。

     

    本当に同じになるかしりませんが、

     

     慶次郎 さんからの引用

    プログラムやコマンド等でDES暗号化を行う手段はありますでしょうか?

     

    さまざまな方法で可能です。

     

    誰かが作ったプログラムを使ってもいいですし、

    自分でつくってもいいでしょう。

     

    作るのでしたら

    WindowsはCryptographic Service Providersという暗号ライブラリ(?)をもっていて、

    これのサポートする暗号化アルゴリズムにDESもありますので、

    これを使うとらくでしょう。

    Cからも使えますし、

    .NetならDESCryptoServiceProviderというクラスにラップされています。

     

    JavaでもJava Cryptography ExtensionなどでDESを使えますし、

    JavaScriptでも、VB6でも、Perlでも、PHPでも、Rubyでも、

    便利なライブラリがあります。

     

    好きな環境で作ればよいと思います。

     

    既存のものをなるべくそのままWindowsに移したいのであれば、

    CygwinやServices For Unixを使ってもいいと思います。

    また、cygwinのなかにcrypt.exeがあったような気がします。(最近は知らない。

     

    自分で作りたくないのであれば、

    ソフトを探せばかなりたくさんあると思います。

    ざっと探しただけで数件みつかりました。

     

    どんな方法をとるにしろ、短い文字列を暗号/復号する程度でしたら簡単に可能です。

     

    cryptの前後にBase64をかけるもの、後だけにかけるもの、など、

    DESそのものは同じでも、前処理、後処理やバッファの処理が多少違うものがありますので、

    そこだけ気をつければよいとおもいます。

    2008年4月18日 23:39
  •  慶次郎さんこんにちは

     WindowsのActivePerlで同じ暗号化文字列が生成されることが以下のページから読み取れます。saltが空白文字だった場合に挙動に差があるようですが、その場合には暗号化自身ができないので実質的に問題がないと思います。

     

    http://kijou-masayuki.blogspot.com/2007/04/saltcrypt.html

     

     PHP,rubyでも良いかも知れませんがちょっとわかりません。

     

     ご自分でお作りになる場合は、以下のページが参考になるかもわかりません。

     

    http://www.mew.org/~kazu/bsdmag/password.html

     

     ただ気になるのはDESCryptoServiceProviderがsaltに対応していないのではないかなということです。

     

    2008年4月19日 0:51

すべての返信

  •  慶次郎 さんからの引用

    暗号化について教えてください。

    そこで、Windows2000サーバ上で、同じ文字列をDES暗号化して、HP-UXでDES暗号化したものと同じ結果(上記例:aajfMKNH1hTm2)を得たいと思っております。

     

    本当に同じになるかしりませんが、

     

     慶次郎 さんからの引用

    プログラムやコマンド等でDES暗号化を行う手段はありますでしょうか?

     

    さまざまな方法で可能です。

     

    誰かが作ったプログラムを使ってもいいですし、

    自分でつくってもいいでしょう。

     

    作るのでしたら

    WindowsはCryptographic Service Providersという暗号ライブラリ(?)をもっていて、

    これのサポートする暗号化アルゴリズムにDESもありますので、

    これを使うとらくでしょう。

    Cからも使えますし、

    .NetならDESCryptoServiceProviderというクラスにラップされています。

     

    JavaでもJava Cryptography ExtensionなどでDESを使えますし、

    JavaScriptでも、VB6でも、Perlでも、PHPでも、Rubyでも、

    便利なライブラリがあります。

     

    好きな環境で作ればよいと思います。

     

    既存のものをなるべくそのままWindowsに移したいのであれば、

    CygwinやServices For Unixを使ってもいいと思います。

    また、cygwinのなかにcrypt.exeがあったような気がします。(最近は知らない。

     

    自分で作りたくないのであれば、

    ソフトを探せばかなりたくさんあると思います。

    ざっと探しただけで数件みつかりました。

     

    どんな方法をとるにしろ、短い文字列を暗号/復号する程度でしたら簡単に可能です。

     

    cryptの前後にBase64をかけるもの、後だけにかけるもの、など、

    DESそのものは同じでも、前処理、後処理やバッファの処理が多少違うものがありますので、

    そこだけ気をつければよいとおもいます。

    2008年4月18日 23:39
  •  慶次郎さんこんにちは

     WindowsのActivePerlで同じ暗号化文字列が生成されることが以下のページから読み取れます。saltが空白文字だった場合に挙動に差があるようですが、その場合には暗号化自身ができないので実質的に問題がないと思います。

     

    http://kijou-masayuki.blogspot.com/2007/04/saltcrypt.html

     

     PHP,rubyでも良いかも知れませんがちょっとわかりません。

     

     ご自分でお作りになる場合は、以下のページが参考になるかもわかりません。

     

    http://www.mew.org/~kazu/bsdmag/password.html

     

     ただ気になるのはDESCryptoServiceProviderがsaltに対応していないのではないかなということです。

     

    2008年4月19日 0:51
  • お世話になります、慶次郎です。

     

    ご指摘いただいたSFUを使用する方法で解決いたしました。

     

    れい様、三輪の牛様ありがとうございました。

    2008年4月21日 9:00
  • みなさんこんにちは。森田 知良です。

     

    れいさん、三輪の牛さん、有用な情報ありがとうございました。

     

    慶次郎さん、フォーラムのご利用ありがとうございます。
    れいさん、三輪の牛さんの情報は、有用な情報のようでしたので、
    勝手ながら回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有効な回答があった場合は、なるべく回答済みボタンを押してチェックを付けてくださるようお願いします。
    慶次郎さんは、回答済みチェックを解除することもできますのでご確認ください。

     

    それでは、これからもフォーラムのご利用をよろしくお願いいたします。

    2008年4月25日 5:38