CまたはC++言語から利用できる暗号化ライブラリを探しています。
ソフトウェア内から、ファイルを暗号化・復号化できるものです。
できたらフリーのものがいいのですが、商用でもかまいません。
お勧めのライブラリ等がありましたら、ぜひ教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

どの辺り迄を以って強度が有るかを判定するのは各社(者)差が有るのでなんとも言えませんが、私が個人で書いた単純なアルゴリズムのエンコードは今のところ破られた報告を受けておりません。


(幾つかの市販パッケージにも導入しています。)

以下のURLにフリーツールを公開していますので、興味が有る様でしたらWebの問い合わせフォームからご連絡ください。
(配布ツールのドキュメントに記述されているメールアドレスはSPAM対策で現在無効になっています。)

参考URL:http://ninja.index.ne.jp/~toshi/others.htm
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
現在、WindowsAPIのcryptの使い方がほぼわかったので、その方向で進ん
でおります。
ご紹介ありがとうございました。

お礼日時:2001/05/11 14:39

どの程度のセキュリティが必要化にも寄るんじゃないでしょうか?


意外とNINJA104さんがおっしゃってるような、単純なアルゴリズムにちょっと一工夫するだけでいけるんじゃないかと思うんですけどね。

Vectorにもいくつかライブラリは有るようです。

参考URL:http://www.vector.co.jp/vpack/filearea/win/prog/ …
    • good
    • 0
この回答へのお礼

vectorでは独自のDESのアセンブラソースをみつけたのですが、他にも
まだあるかもしれませんね。ご回答ありがとうございます。

お礼日時:2001/05/09 21:07

特定のアプリケーション上でのみファイルの中見を展開するのが目的でしょうか?



だとしたら、単純にビットのシフトとローテート等を組み合わせ、専用にコーディングするのが簡単且つ早道で後々に版件問題も発生しにくいのでお勧めします。
    • good
    • 0
この回答へのお礼

ご指摘の通り特定のアプリケーションでのみ扱うファイルです。
ビットのシフト等のみでは暗号の強度が足りないのですが、それほど強力な強度
が必要なわけでもなさそうなので、コーディングの方向でも検討しております。
ご回答ありがとうございます。

お礼日時:2001/05/09 21:05

PGPと言うのがありますよ。


http://www05.u-page.so-net.ne.jp/ba2/naoki-s/pgp …
いかがでしょうか。

参考URL:http://www05.u-page.so-net.ne.jp/ba2/naoki-s/pgpi/
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
PGPは公開鍵を使うシステムですが、PGPではない、一般的な暗号化
ライブラリを探しています。
現在のところ、Windows環境にあるCryptAPIというのを見つけたので、検討
しています。他にもいいものがあればご教示頂ければ幸いです。

お礼日時:2001/05/09 13:05

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q二重の暗号化はファイルに影響ありますか?

オンラインストレージなどに文書を保管したいのですが、念を入れて、二重の暗号化を考えています。たとえば、「アタッシェケース」などのソフトで暗号化した後に、もう一度「ED」などのソフトで暗号化しようと思います。おそらくセキュリティーは完璧になると思いますが、ファイルに影響ありますか?影響とはたとえば、元のファイルやフォルダが壊れやすい…などです。詳しい方よろしくお願いいたします。

Aベストアンサー

二重の暗号化自体が原因でファイルやフォルダが壊れやすくなる事は
通常有りません。
復号する順番や暗号鍵を間違えた場合は、元に戻りませんが....

#暗号化プログラムのファイル入出力処理にバグが有る場合も除く...

Q暗号化・復号化のアルゴリズムにはどんなものがありますか?

Cでプログラミングを勉強しており、20文字ほどの文字列を暗号化・復号化するプログラムを考えていますが、ネットを検索しても暗号化アルゴリズムでなかなかいいものが見つかりません。

私のリクエストとしては

・暗号化対象は半角英数字、半角記号のみ。
・単に文字コードを1つずつずらしたような簡単な暗号ではなく、複雑なアルゴリズムを使用したい。
・アルゴリズムは複雑でもプログラムは簡潔にできるものがいい。(長くても数百行程度)。
・アルゴリズム自体の仕様が公開されている。
・アルゴリズムは数学式で表せるものがいい。
・スーパーコンピュータを使わなければ解けないほど時間がかかる暗号化アルゴリズムでなくてもいい。
・暗号化のライブラリファイルは使わず、自前で全部コードを書きたい。
・公開鍵や秘密鍵を使わなくてもいい。

上記の条件を満たす暗号化アルゴリズムでいいものがありましたら、教えてください。

以上、よろしくお願いします。

Aベストアンサー

Blowfishはどうでしょうか。

・暗号化対象は半角英数字、半角記号のみ。
> バイナリデータでしたらなんでも暗号化できます。

・単に文字コードを1つずつずらしたような簡単な暗号ではなく、複雑なアルゴリズムを使用したい。
> 簡単に解く方法はまだ見つかっていないはずです。

・アルゴリズムは数学式で表せるものがいい。
> どのようなものを数学式として想定されているのかは分かりませんが、
> 数学式で表せない暗号化方式はコードにできないと思いますので
> 数学式でも表せるでしょう。

・暗号化のライブラリファイルは使わず、自前で全部コードを書きたい。
> サンプルコードを見ていただければ分かるのですが、600行ほどのコードで実現できます。自前で全部書けるでしょう。

> 公開鍵や秘密鍵を使わなくてもいい。
共通鍵暗号方式なので公開鍵や秘密鍵は使いません。

参考URL:http://www.schneier.com/blowfish-download.html

Qアタッシェケース?

NHKの8時45分からのニュースで「駅で強盗に会った」っというところで「宝石の入ったアタッシェケースが」えっ!アタッシュケース!じゃないの?
アタッシェケースとアタッシュケースってなにが違うの?
よろしくお願いします。

Aベストアンサー

NHKでは、attache caseという英語のもとのつづり・発音を重視します。

「Xアタッシュケース --> Oアタッシェケース」

下記URLを参照してください。

参考URL:http://www.nhk.or.jp/bunken/yougo/b3398-j.html

QVisual C++ 2008でのDXライブラリ導入について

Visual C++ 2008でのDXライブラリ導入について

最近プログラムの勉強を始めたばかりの初心者です。
Microsoft Visual C++ 2008 Express EditionにDXライブラリを導入しようと思い、http://homepage2.nifty.com/natupaji/DxLib/dxuse_vc2008express.html
↑のサイトで手順どおりにやっていたのですが、サンプルプログラムの実行でエラーが出ました。
エラーの内容は
include ファイルを開けません。'excpt.h': No such file or directory
といったものです。
プログラムの記述はコピー&ペーストしたので間違ってはいないと思います。
なので、サンプルプログラムの前の設定で何か変になっている事があると思うのですが、
どうにも手順を間違っているように思えません。
念のため書いておくとOSはvistaを使用しています
分かりづらいかと思いますが原因がわかる方いましたらぜひ教えてください。足りない部分があったら補足します。よろしくおねがいします

Visual C++ 2008でのDXライブラリ導入について

最近プログラムの勉強を始めたばかりの初心者です。
Microsoft Visual C++ 2008 Express EditionにDXライブラリを導入しようと思い、http://homepage2.nifty.com/natupaji/DxLib/dxuse_vc2008express.html
↑のサイトで手順どおりにやっていたのですが、サンプルプログラムの実行でエラーが出ました。
エラーの内容は
include ファイルを開けません。'excpt.h': No such file or directory
といったものです。
プログラムの記述はコピー&ペーストしたので間違っては...続きを読む

Aベストアンサー

>include ファイルを開けません。'excpt.h': No such file or directory

デフォルトのままVC++ 2008 ExpressEditionをインストールしたのならば、
C:\Program Files\Microsoft Visual Studio 9.0\VC\include
にあるハズです。
それが読めない…ということは、インクルード ファイルのディレクトリの設定がおかしくなったのでしょう。

掲示されたページの「2.VisualC++ 2008 Express Edition でDXライブラリを使うための設定を行う」で、既存の設定を壊してしまった可能性があります。
初期のままであれば…
$(VCInstallDir)include
$(VCInstallDir)atlmfc\include
$(WindowsSdkDir)\include
$(FrameworkSDKDir)include
の4つが設定されているかと思われますが、これらは残っていますか?

Qフリーウェアの暗号化ソフトの業務での試用

職場の業務用パソコンには、指定したソフトウェア以外は個別に承認プロセスを経てインストールする運用を行っており、また個別にインストールするソフトウェアも、業務で使うものですので、有償製品を購入しフリーウェアは用いないことを原則にしています。

1.今回、ファイルの暗号化ソフトウェアを試行導入したいという部署があり、機能的には以下のQ&Aに紹介されているような暗号化定番フリーウェア(アタッシェケース等)で十分なのですが、業務で使用しても特に問題ないと判断してもよいでしょうか。無理して有償ソフトを購入しても、このような定番ソフトと比較して、どれだけメリットがあるのかとも思い質問させていただきます。

2.他の企業がどうしているかわからないのでお聞きしますが、フリーウェアを一律に禁止するのはあまり意味がないポリシーで、むしろいいものは使っていくという考え方をしているところが多かったりするのでしょうか。

以上よろしくお願いします。


以下のQ&Aを参考にしました。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1427596

職場の業務用パソコンには、指定したソフトウェア以外は個別に承認プロセスを経てインストールする運用を行っており、また個別にインストールするソフトウェアも、業務で使うものですので、有償製品を購入しフリーウェアは用いないことを原則にしています。

1.今回、ファイルの暗号化ソフトウェアを試行導入したいという部署があり、機能的には以下のQ&Aに紹介されているような暗号化定番フリーウェア(アタッシェケース等)で十分なのですが、業務で使用しても特に問題ないと判断してもよいでしょうか。無理...続きを読む

Aベストアンサー

こんなところでそのようなことを質問するのもちょっと危険だと思いますが・・・・専門の方に有償でも相談されたほうが良いのではないでしょうか。

といいつつもちょっと回答させていただきますと、1.のご質問に関しては、特にフリーウェアの運用保守についてリスクを負うと思います。なにかあったとき(例えばバグがあってあるパターンのファイルの復号化が出来なくなったなど)になんの保証も無いのは非常にリスキーです。もっと言うとフリーウェアの作成者さんが汎用的な復号方法を裏でまわしていないとも限りません(勘繰りすぎだというのはわかってますが、こういうことも一つのリスクとして認識すべきです。)

2.については、1.の回答の理由を主として、意味の無いポリシーだとは思いません。特に金融系の企業などでは禁止している場合が多いと思います。

今回の場合は暗号化と言うことなので、機密性、重要性の高いものだと想定いたしましたので、なおさらフリーウェアの使用はお勧めできません。

QUnix上C++でのdllとインポートライブラリの関係

こんにちわ。
いつも教えてgooにお世話になっているorange_pieです。
UNIX上のC++で作成した自作ライブラリをdllにして配布したいのですが、
Unixでの基本的な考え方を教えてください。

(1)Unix上ではDLLの標準的な名称は”libxxxx.so”とするのが普通ですか?
 ※この形式ならLD_LIBRARY_PATH環境変数が検索してくれる。。。
(2)通常、DLLにする場合、インポートライブラリ(.lib)と実際のライブラリ(.so)を作成して、使用する側はインポートライブラリのみをリンクするのでしょうか?
(3)配布されたdllを使う側では、Link時にインポートライブラリをリンクして、関連インクルードファイルをインクルードするだけで使えるのでしょうか?
(4)上記の(2)のように、インポートライブラリとライブラリの実態を作成する為のコンパイルオプションが見つかりません。(ldのmanを見たのですが、意味がわからないと言うか。。。。。)

この質問は、自作ライブラリからlibxxx.soという形のオブジェクトファイルを作り、別プログラムからこのlibxxxをコンパイルオプション(-l)でリンクしてみたら正しく動作したのですが、これでは結局ライブラリの本体が一緒にリンクされている様子で、出来上がった実行形式のファイルサイズが静的ライブラリとしてリンクした時と同じ大きさになっていることに疑問を抱いてしまったものです。
 この状態でも、ライブラリの方だけコンパイルしなおして実行すると
ちゃんとライブラリの変更点は反映されるので問題は無いのですが、
これでもダイナミックリンク・ライブラリと呼べるのでしょうか?

こんにちわ。
いつも教えてgooにお世話になっているorange_pieです。
UNIX上のC++で作成した自作ライブラリをdllにして配布したいのですが、
Unixでの基本的な考え方を教えてください。

(1)Unix上ではDLLの標準的な名称は”libxxxx.so”とするのが普通ですか?
 ※この形式ならLD_LIBRARY_PATH環境変数が検索してくれる。。。
(2)通常、DLLにする場合、インポートライブラリ(.lib)と実際のライブラリ(.so)を作成して、使用する側はインポートライブラリのみをリンクするのでしょうか?
(3)配布されたdll...続きを読む

Aベストアンサー

# すっごく暇ってわけではないんですが :-)

> -Wl,-B,dynamic -lclntsh -ldl -lm -lnsl -lsocket -lrt -lpthread
>
> この中の”-B, dynamic ”の辺りが「ライブラリをダイナミックにリンクするよ」ってことだったのでしょうか?

man ld の -l と -B のところを読めば分かると思いますが、大体、そういうことです。

-B dynamic の場合(普通は、こっちがデフォルト)には -lxxx の指定で libxxx.so
を探して、無ければ、libxxx.a を探します。-B static の場合には libxxx.so を
対象にしません。

参考URLには solaris の AnswerBook を紹介しておきます。


> ということも考慮に入れると、arコマンドで作ったアーカイブもDLLもリンクオプションで-B dynamic とすれば、実行時にリンクできる。(のかな?)

いやいや。静的なライブラリ、っつう位ですから、静的なリンクにしか使え
ません。

.a も .so も「ライブラリ」って名前がつきますけれど、.a はアーカイブファイル
なので、tar の出力ファイルの方に似ています。.so の方は、実行形式のヘッダを
持ち ELF というフォーマットのファイルで実行バイナリの方に似ています。


> で、他人に提供するのにアーカイブとDLLのどちらが適しているかというと、
> 関数などが増えた場合以外はどちらでも同じ(という感じ?なのかな?)

その「他人」の環境次第なんですが、相手の OS やバージョンが特定できないと
静的なアーカイブの方が、利用できる可能性が少し広いです(ソース提供には
遠く及ばないですが)。

> arコマンドは、複数のオブジェクト(.o)を追加することで作成しなおすことができるが、DLLはライブラリ構成プログラムをリコンパイルする必要がある。

リコンパイルではなく、再リンクです。


後、共有ライブラリの場合には、あまり小さく刻んでしまうとロードの時間が
気になり出すので、ひとつのファイルの単位をどうするかを悩むときがあり
ます。


最後に、No.2 の回答にあるように unix をひと括りにして、.so が普通、と
言うのは、ちょっと大雑把すぎました。他の質問のことが頭にあったもので
orange_pie さんが使っている環境を暗に想定してました。

十年くらいさかのぼっただけで共有ライブラリが扱えない unix なんてのは、
ごろごろしてましたし。

参考URL:http://docs.sun.com:80/ab2/coll.153.4/REFMAN1/@Ab2PageView/116238?Ab2Lang=ja&Ab2Enc=shift_jis

# すっごく暇ってわけではないんですが :-)

> -Wl,-B,dynamic -lclntsh -ldl -lm -lnsl -lsocket -lrt -lpthread
>
> この中の”-B, dynamic ”の辺りが「ライブラリをダイナミックにリンクするよ」ってことだったのでしょうか?

man ld の -l と -B のところを読めば分かると思いますが、大体、そういうことです。

-B dynamic の場合(普通は、こっちがデフォルト)には -lxxx の指定で libxxx.so
を探して、無ければ、libxxx.a を探します。-B static の場合には libxxx.so を
対象にしません。...続きを読む

Q特定のファイルを自動的に暗号化するフリーソフト

Windowsで稼働するソフトで、特定のファイルを自動的に暗号化するフリーソフトを探しています。これをタスクに登録して特定のファイルを自動的に暗号化させるのが目的です。
暗号化ですが、ファイル名と拡張子を自動的に暗号化するものでもかまいません。ZIP圧縮の暗号化など、暗号が簡単ではないにしろ、暴かれやすいような暗号化をするフリーソフトは除きます。
どなたか、ご教授の程宜しくお願い致します。

Aベストアンサー

> もっと詳しく記述願います。

やりたい事が不明瞭ですので、具体的な手順はちょっと…。

・特定のファイルとは?
 -特定のフォルダ、ファイル名の1ファイル
 -特定の種類のファイル
 -それ以外の特定のファイル
・ファイル名と拡張子を自動的に暗号化とは?
 -特定のファイル名のファイルを暗号化したい
 -ファイル名や拡張子も暗号化している事が分からないようにしたい
・タスクに登録という事は?
 -起動時、一定時間ごとに暗号化したい

・対象のファイルは他のアプリケーションで開いている?
・暗号化の目的は?他者に見られたくないのなら、暗号化前のファイルが残るのは問題?
・OSはXP?
・ファイルサイズは?

などなど。

--
例えばですが、

アタッシェケース
http://www.vector.co.jp/soft/win95/util/se280871.html

ですと、以下のバッチファイルでファイルを指定して呼び出せました。(Win2000環境)

↓↓↓↓↓ hoge.bat ↓↓↓↓↓
"C:\Program Files\アタッシェケース\AtchCase.exe" "D:\hoge\hoge.txt"
↑↑↑↑↑ hoge.bat ↑↑↑↑↑

暗号化パスワードを記憶する設定なら、多分暗号化してくれるハズ。

> もっと詳しく記述願います。

やりたい事が不明瞭ですので、具体的な手順はちょっと…。

・特定のファイルとは?
 -特定のフォルダ、ファイル名の1ファイル
 -特定の種類のファイル
 -それ以外の特定のファイル
・ファイル名と拡張子を自動的に暗号化とは?
 -特定のファイル名のファイルを暗号化したい
 -ファイル名や拡張子も暗号化している事が分からないようにしたい
・タスクに登録という事は?
 -起動時、一定時間ごとに暗号化したい

・対象のファイルは他のアプリケーションで開い...続きを読む

QC++のソースをライブラリ化すると問題が・・・・・・

他の人のプログラムをLibにして流用しようとしているのですが,
問題にぶち当たってます.

Libで定義されているクラスに,
ある情報を取得/格納できるクラスがあるのですが,
いざ,そのクラスをインスタンス化し,
クラスで定義してあるメソッドを実行してインスタンスのメンバ変数に情報を格納した後に,インスタンスのメンバの情報をメソッドなどは使わずに取り出そうとすると一部の情報が格納されておらず抜き出すことができません.
そのクラスにはシングルトンで実装されており,クラスが持っている情報表示用メソッドを実行すると,ちゃんと,格納されてるぽいのですが・・・・・.もちろん,メンバ変数はパブリックです.

唯一違うとすれば,取り出すことができるメンバの型はdoubleで,取り出せないのはVector< (独自の構造体) >という点くらいです・・・・.エラー内容は取り出せないというよりはVectorのメモリが確保されていないような感じです.

当然,Libをexeで起動した場合は正常に動いているます.

何か思いつく原因は無いでしょうか??
宜しくお願いします!!

他の人のプログラムをLibにして流用しようとしているのですが,
問題にぶち当たってます.

Libで定義されているクラスに,
ある情報を取得/格納できるクラスがあるのですが,
いざ,そのクラスをインスタンス化し,
クラスで定義してあるメソッドを実行してインスタンスのメンバ変数に情報を格納した後に,インスタンスのメンバの情報をメソッドなどは使わずに取り出そうとすると一部の情報が格納されておらず抜き出すことができません.
そのクラスにはシングルトンで実装されており,クラスが持ってい...続きを読む

Aベストアンサー

多分ですが。。。

vectorの実装をLib側で行っており、vector<独自の構造体>の「独自の構造体」をLibを使う側で行っていませんか?

この場合、Lib側のコンパイル時に「独自の構造体」のサイズを確定できないため、コンパイルは一応正常終了しても可笑しな動作になります。

Qアタッシェケース バージョンアップ手順

現在旧バージョンのアタッシェケースを使用しています。
新しいバージョンをインストールしたいのですが、手順・注意事項等、どなたか教えて下さい。

前回、インストーラーでインストールしましたが、保存先を変えています。
新しいバージョンをインストールしかけて、保存先が違う事に気付き、途中でキャンセルしました。

古いバージョンのものは、先にアンインストールしておくべきなのでしょうか?

作者のHPを見ても、解らず質問させていただきました。

よろしくお願いします。

Aベストアンサー

こんにちは。

今のを削除してデフォルトの設定でインストールしたほうが無難かと思います。

ちなみに、アタッシェケースのダウンロードで、 atcs2827.exe ではなく atcs2827.zip なら解凍するだけでインストールなしで使用出来ます。
これも、ややこしくなるので今のをアンストールした方がいいです。

QC言語 暗号化について

暗号化について勉強しているのですが、奇数文字+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;
}
このプログラムでやりたいのですが、エントリーポイントを定義しなければなりません、とエラーがででしまいます。どうしたらいいでしょうか?

Aベストアンサー

>エントリーポイントを定義しなければなりません、とエラーがででしまいます。どうしたらいいでしょうか?

C言語は「mainと言う名前の関数」が「エントリ関数」になり、この関数の入り口が「エントリポイント」として定義されます。

そして、プログラムを起動すると、必ず、main関数から実行し始めます。

1つのプログラムには、必ず、1つのmain関数が存在している必要があります。main関数が1つも無かったり、2つ以上あってはいけません。

質問者さんのプログラムでは、charを1文字与えると、charが1文字返って来るだけです。

これだけではプログラムは動きませんから、main関数に
・文字列を入力する。
・入力した文字列からcharを順に1文字づつ取り出す。
・取り出したcharを質問文にある関数に与える。
・変換後の文字列を作る場所に、返って来たcharを1文字づつ格納する。
・文字列が無くなったら、変換後の文字列を表示する。
と言う処理を書く必要があります。


人気Q&Aランキング

おすすめ情報