🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

暗号化

ネットワークを通じてデジタルデータをやり取りする際に、第三者に解読されることのないよう、アルゴリズムを用いてデータを変換すること。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

14909閲覧

C++で暗号化、復号化をするには

JustinDover

総合スコア6

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

暗号化

ネットワークを通じてデジタルデータをやり取りする際に、第三者に解読されることのないよう、アルゴリズムを用いてデータを変換すること。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2019/11/22 01:10

Windows10、VisualStudio2017のC++を使っています。
AES256でのファイルを暗号化/復号化を行うツールを作りたいのです。
画面やファイルの読み書きはあちこちにサンプルがありますのでいいのですが、肝心の暗号化/復号化を行う方法がわかりません。
Googleでしらべたところ、.NET Frameworkでサポートしているとのことですが、どのようにすれば使えるようになるのでしょうか?

C++でのサンプルコードなどがある場所がありましたら教えていただきたく。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Googleでしらべたところ、.NET Frameworkでサポートしているとのことですが、どのようにすれば使えるようになるのでしょうか?

C++から.NET Frameworkを使うことは困難です。

Windows APIに暗号化ライブラリがありますので、そちらを使いましょう。

投稿2019/11/22 01:16

maisumakun

総合スコア145963

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/11/22 01:27

> C++から.NET Frameworkを使うことは困難です。 おっしゃる通りです。しかし、System.Security.Cryptography.RijndaelManaged が COM として公開されているので、これに限ってはそれほど困難ではありません。が、この内部で Windows API が使われているだろうと思うので、それなら最初から Windows API を使ったほうがいいですね。
JustinDover

2019/11/22 03:51

ありがとうございます。 .NET Frameworkにこだわってるわけではないので、APIで出来るならそれでもかまいません。 どこかにサンプルコードなどはないでしょうか。
JustinDover

2019/11/25 06:29

何故か復号のほうはソースがないですが、暗号のコードを参考にさせていただきます。 ありがとうございます。
guest

0

思いつく方法は5つ。

  • Windows API 側の暗号系APIを使う -> (1)
  • .NET Frameworkを使う -> (2)
  • 外部ライブラリを使う -> (3)
  • ほかの言語でCUIなりGUIなりのソフトを作り、プロセス起動とかで外部に委託するような感じ -> (4)
  • 諦める -> (5)

ですね。

例えば、方法4なら、Java( ほかの言語、例えばPythonとかでもいいけど ) で暗号化・複合を行うプログラムを組んでおいて、C言語からはプロセス起動のような処理で起動する。

方法1 は 何種類かあるみたいですが、EternalWindowsさんのようなサイトで説明されていますから、それを参考に。
(著作権とかライセンスにはご注意を。)

方法2はVC++でならできる...かなぁ...? (あまりVC++は使わないので確実なことは言えませんが...)

方法3は CryptoppOpenSSLとかがあるようです。
(他にもあるようですが、ご自身で調べてください。)

ちなみに方法3は『C言語 暗号化 ライブラリ』とかで検索してみました。

ただ、方法3はCygwinとかUnixライクなコマンドが使えることが前提になっていることが多いので、
Windowsユーザで初心者の方とかにはハードルが高いんじゃないかなぁと思いますが、方法としては存在するので書いておきます。

投稿2019/11/24 02:18

BeatStar

総合スコア4962

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JustinDover

2019/11/25 06:27

希望としては(1)(2)ですね。 ご紹介のサイトも参考にさせていただきます。
guest

0

以下にソースがあるようです。中身は確認してません。

共通鍵暗号方式を用いた AES 暗号

投稿2019/11/22 08:04

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JustinDover

2019/11/25 01:54

ありがとうございます。 コードを見てみましたが、何かライブラリを使うのではなく、自力で暗号化/復号化をやっているようで、私にはちょっと敷居が高いようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問