ふらっと C#,C♯,C#(初心者用) Part131 [無断転載禁止]©2ch.net

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん
垢版 |
2017/09/08(金) 18:12:11.06ID:Ej7G00WU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part130
https://mevius.2ch.net/test/read.cgi/tech/1500327645/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
2017/10/09(月) 11:51:02.13ID:2VEzXzCr
難読化を重視するならUWPに移行すればいいのに
2017/10/09(月) 11:52:12.53ID:A2XN0/QV
フロー難読化もあるから初級者上級者関係ない
解析は根気があるかどうかが問題だよ
2017/10/09(月) 11:54:51.63ID:M//uOX8+
難読化の目的理解してないやつ大杉だろw
2017/10/09(月) 12:00:45.54ID:9hl0U6ca
やはり普通やらないような事なのですね
なんとなくですが理解しました!
アプリ内に書いてある文字列で別のアプリで暗号化したものを復号化してみるアプリだったのですが、文字列が丸見えらしく知り合いに聞いてみたら難読化してみたら?との事でした
要は文字列だけ隠したいのですが何かしら方法はあるものなのでしょうか?
2017/10/09(月) 12:02:01.69ID:3IBabimx
>>879
ググれ
2017/10/09(月) 12:04:20.36ID:VHpEwq8w
>>879
本来の意図が分からないが元のアプリ内の文字列を最初から暗号化したら済む
解析もできないようにしたいのだったら難読化だろうが何だろうが無理
手間がどれだけかかるかだけの違いしかない
2017/10/09(月) 12:08:39.18ID:3IBabimx
パスワード c# プログラム内
でググったら
ハッシュがどうのこうのってのは出てきた
使えるかな?
2017/10/09(月) 12:12:31.64ID:pMEz2IHg
俺が書いたコードは難読化しなくても誰にも理解出来ないよ。
2017/10/09(月) 12:35:35.80ID:M//uOX8+
>>879
それは難読化じゃなく暗号化
君もだけどその知り合いもしばいときな
2017/10/09(月) 12:45:14.62ID:c41RoAYB
ツールを使ってjsのコードを難読化し、ユーザーはツールを使ってそれを可読化する
人間って面白いね
2017/10/09(月) 12:45:28.90ID:Bjp73H7L
知り合いはともかく自分で自分をしばくのか
2017/10/09(月) 12:51:39.85ID:Zzx1e3hO
>>879
そもそも、復号キーをコードの中に埋め込んでいるのが間違いだろうけどね。
復号キーを暗号化しても復号アルゴリズムがコードの中にあったら無意味だよ。
2017/10/09(月) 12:54:13.72ID:T0povuKJ
>>887
そういう場合は秘密鍵をサーバーに、プログラムには公開鍵だけを持たせるやり方が簡単
ネットを介さない環境で使用するアプリとかなら仕様がわからんんがキーコンテナを使え
2017/10/09(月) 12:54:50.95ID:T0povuKJ
すまんレス番間違った >>879
2017/10/09(月) 13:21:52.47ID:9hl0U6ca
みなさまありがとう
アプリAで暗号化、アプリBで復号化、他者はBしか持っていないという状況を想定して、アプリB内の復号化に使う文字列をなるべく隠したくて質問させて頂きましたが難しそうですね

いろいろ素人なりに調べてみたけれどやはり秘密鍵をどうにかサーバーに置いておくのが良さそうに感じました
ただ適当なサーバーに適当に秘密鍵をアップしてもあまり意味なさそうなのでその辺りもよく考えないとダメそうですね…

ゆくゆく作りたいアプリのために始めてみましたが、ある程度解析しづらいらしいC++などで最初から考え直しても良いのかもしれません
アドバイスありがとうございました
2017/10/09(月) 13:49:55.29ID:KtpP5XlM
>>890
鍵を外部ファイルにすればいいだけだろ
なんでcでやるとかサーバー使うみたいなトンチンカンな方向に行ってしまうんだ
892デフォルトの名無しさん
垢版 |
2017/10/09(月) 14:00:57.24ID:qEhozSMZ
>>891
外部ファイルだと中身見れるから意味ないだろバカか
2017/10/09(月) 14:07:28.45ID:KtpP5XlM
>>892
ははは
2017/10/09(月) 14:13:38.87ID:T0povuKJ
外部ファイルが許されるのは入力パスワードに対してのハッシュくらいだろ
879の案件には合わない
2017/10/09(月) 14:18:01.80ID:T0povuKJ
更に外部ファイルの改竄チェックも必要になるな
2017/10/09(月) 14:21:39.53ID:KtpP5XlM
あ、ここ初心者スレだったか
2017/10/09(月) 14:22:02.94ID:6DW9ok56
Bで作った公開鍵をAに渡して暗号化させればいいだけの話でないのん
秘密鍵だけで無理にやろうとするから当たり前のように無理が出るのでは
2017/10/09(月) 14:23:03.18ID:6DW9ok56
まあ、厳密にはその場合でも、一時共有鍵は使うだろうけど
899デフォルトの名無しさん
垢版 |
2017/10/09(月) 14:40:20.42ID:qEhozSMZ
>>896
トンチンカンなバカレスするお前は初心者以下
2017/10/09(月) 14:52:27.91ID:KtpP5XlM
>>899
わからないならそう言えば?
2017/10/09(月) 14:58:22.98ID:Ow6+xo9r
>>900
関連スレに2度と来ないでくれ
902デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:01:38.21ID:qEhozSMZ
>>900
じゃあ早く俺のレスに答えて
2017/10/09(月) 15:02:18.20ID:T0povuKJ
ID:KtpP5XlM はただの荒らしだろ
もう構うな
2017/10/09(月) 15:02:45.85ID:M//uOX8+
>>887
無意味ではないよ
文字列抜き出すのとアルゴリズムの解析とでは
必要な時間が全く違うからね
それこそ難読化の出番
2017/10/09(月) 15:05:23.09ID:M//uOX8+
>>890
Aに秘密鍵、Bに公開鍵で。
Aの秘密鍵を守る対策は別途必要
2017/10/09(月) 15:06:38.70ID:LtbrVXIC
埋め込みでリソース持つのと、外部ファイルで持つのってセキュリティそんなに変わらんでしょ?
2017/10/09(月) 15:07:25.29ID:ZyuEIFSh
そもそも暗号化手順+暗号キーを知られたくないならまだしも暗号キーをとにかく知られたくないというのが分からない
元の質問者は終了宣言しているし外野が条件変えながら議論しても無意味
2017/10/09(月) 15:09:31.57ID:KtpP5XlM
暗号化通信の基本もわかってないのにプログラマ名乗っちゃダメだろ君たち
909デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:10:52.65ID:qEhozSMZ
>>908
逃げんな
早く答えろ
2017/10/09(月) 15:15:00.06ID:of8Vs49y
>>891
それなんの意味があるんだよ w
2017/10/09(月) 15:18:53.37ID:KtpP5XlM
公開鍵で暗号化プログラムA
秘密鍵で復号プログラムB
Bの利用者は鍵ペアを生成
外部ファイルとして秘密鍵をプログラムに渡す
公開鍵を通信相手に渡す
終わり
2017/10/09(月) 15:22:46.29ID:KtpP5XlM
コード書けりゃプログラマじゃないぞ
お前らはC#なんてやっとらんでITパスか基本情報でも取ってこい
2017/10/09(月) 15:29:43.51ID:vwGL24JO
そのまえに日本語が書けないと困るな
2017/10/09(月) 15:30:38.86ID:LtbrVXIC
そういや試験は来週ぐらいか
2017/10/09(月) 15:39:49.40ID:of8Vs49y
>>911
だからそれなんの意味があるんだよ w
>>906の意味わかってないのか?
2017/10/09(月) 15:54:47.16ID:F9+aoLk/
if(HashPasswordForStoringInConfigFile(パスワード, "sha1").ToLower() == ハッシュ文字列)
{/*編集可能処理*/}

って書いてあった
2017/10/09(月) 15:57:26.54ID:ZyuEIFSh
>>916
>>879のデータの暗号化とパスワードの認証は別の話
ハッシュで認証するから元のパスワード持っていなくていいよ、てのはわかるが
2017/10/09(月) 16:04:00.40ID:LtbrVXIC
認証したいなら個別に別ルートでパスワード発行

ユーザー全員に共通パスワード持たせたいならセキュリティ諦めてリソース持つぐらいで十分
できれば中間にAPI噛ませて何かあった時の被害をコントロールできるようにしておいたほうがいい
2017/10/09(月) 16:39:19.76ID:F9+aoLk/
>>917
単純にテキストだけの話なの?
バイナリファイル読み込め的な?
2017/10/09(月) 16:39:54.37ID:Uib+y8KD
以前List<T>オブジェクトをXmlシリアライズ・デシリアライズする拡張メソッドを作ったのですがユーザー定義クラスのときだけ動きません
public static void SaveXml<T>(this List<T> list, string path)
{
T[] xmldata = list.ToArray();

using (FileStream fs = new FileStream(path, FileMode.Create))
{
XmlSerializer xml = new XmlSerializer(typeof(T[]));

xml.Serialize(fs, xmldata);
}
}

こういった感じでList<MyData>型の変数myDataList.SaveXml("D:\hogehoge.xml")と呼ぶとxml.Serialize(fs, xmldata)のところで
System.InvalidOperationExceptionが投げられます。ただのList<string>型の場合投げられません。
どこがまちがっているでしょうか?
2017/10/09(月) 17:09:31.29ID:mhNcAFC5
とりあえずその投げられた例外をToString()して全部読んでみて
922デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:14:46.63ID:qEhozSMZ
>>911
はあ?
秘密鍵丸見えじゃ無意味って理解出来ないの?
2017/10/09(月) 17:18:01.05ID:RdvZrZJ8
>>922
君は果てしなく馬鹿だね
2017/10/09(月) 17:19:21.84ID:c41RoAYB
自分だけはバカじゃないという前提
925デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:23:16.60ID:qEhozSMZ
>>923
違う用途ならともかくこの件においては
データ改変できて無意味
2017/10/09(月) 17:24:22.08ID:RdvZrZJ8
>>925
そうかいじゃあやってみなよ
2017/10/09(月) 17:28:38.64ID:r14Jr9yH
>>920
型以外の条件を一切変更していないのに(ダメな人は他の条件も変えてたりするから困るw)
TがMyDataの場合だけ例外は発生するのであれば、
普通に考えてMyDataがXMLシリアル化可能な条件を満たしてないんでしょう。

例えばデフォルトコンストラクタがないとかそもそもpublicなクラスじゃないとか。
928デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:28:45.97ID:qEhozSMZ
>>926
は?
間違ったやり方をやるわけないだろバカ
2017/10/09(月) 17:29:14.61ID:RdvZrZJ8
>>928
できないんだね
2017/10/09(月) 17:34:23.08ID:Uib+y8KD
>>921
できなかったのはコンストラクタ定義していたせいでした、すいません
2017/10/09(月) 17:42:16.72ID:CACjh+QN
馬鹿の壁みたいだ

初心者のためにかくと
公開鍵は暗号化する鍵で誰にみせてもいい
秘密鍵は暗号を解く鍵でみせてはいけない

B利用者は自分のための公開鍵と秘密鍵を作る
作った秘密鍵をプログラムBに渡す

公開鍵は誰にでも渡してプログラムAで鍵をかけてもらったものを送ってもらう

B利用者は送られたものをプログラムBで鍵を解く

送った内容は秘密鍵を持ってないと中身がみえないので安全
2017/10/09(月) 17:47:02.95ID:0amLgkzQ
命名スレで暴れてた馬鹿おじさん
こんなところにいたのか
2017/10/09(月) 17:48:41.75ID:CACjh+QN
秘密鍵を相手に渡すのは馬鹿の極み
公開鍵は誰に見られてもいいので
難読化とかそういう以前の問題

セキュリティがどうこう言う前に勉強すべき

プログラムBが公開鍵持ってても何の問題ない
2017/10/09(月) 17:49:44.10ID:c41RoAYB
お互いにバカバカいっててレベル低い系?
935デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:50:42.44ID:qEhozSMZ
>>929
アスペか?日本語すら出来ないバカは死んでろ
生きてる価値も意味も皆無だから
2017/10/09(月) 17:51:09.22ID:CACjh+QN
馬鹿は馬鹿同士でお互いにバカにしあっていればいい
俺は横から初心者のために解説してるだけ
2017/10/09(月) 17:51:40.46ID:KtpP5XlM
>>935
鏡に語りかけてる
やばいやつだこいつ
2017/10/09(月) 17:51:44.57ID:r14Jr9yH
実にどうでもいい話だけど、元の質問者のケースは別人の間の通信ではないので、
公開非公開の区別の意味はないね。

この分野全然知らんけど、サーバーに復号化のための情報を置いたら安全って発想は
ちょっと理解できんなあ。

それってハッキングする側から見たら、単にサーバーの認証を突破するひと手間が
増えただけの話じゃないの?
2017/10/09(月) 17:52:50.89ID:c41RoAYB
争いは同レベル同士で起こるとはよく言ったものだ
2017/10/09(月) 17:54:11.26ID:CACjh+QN
>>938
多分適当にググれば10分ぐらいで何を言ってるかわかるよ
941デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:55:23.10ID:qEhozSMZ
>>933
ユーザーに改変されたくないデータをやり取りする場合そのやり方だと無意味
2017/10/09(月) 17:56:26.56ID:CACjh+QN
うっわ無知な馬鹿に絡まれた
最悪・・・

無知でも考えれば何とか答えが出るのに…
943デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:56:55.32ID:qEhozSMZ
>>937
バカはセキュリティ意識がないんだな
944デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:58:13.55ID:qEhozSMZ
>>942
答えられないの?
2017/10/09(月) 17:58:55.36ID:S4nF/O79
>>938
最初から読めばファイル配布の稚拙なシステム作ろうとして注意されたのが分かる
多分本人は問題の本質に気付いていない
そしてこの問題はC#以前の話
2017/10/09(月) 17:59:02.92ID:c41RoAYB
人間の基本行動原理

自分だけはバカじゃないという前提
自分だけは誰よりも常に正しいという前提
2017/10/09(月) 18:04:39.80ID:LtbrVXIC
パブリックキーで暗号&復号化するのはパケットの話
サーバに収めるデータやDBは別
2017/10/09(月) 18:08:41.86ID:T0povuKJ
>>938
そうじゃなくてサーバーに復号化の情報を置くのではなくサーバーで復号化させるってこと
A-B間で直接やり取りできるなら別にサーバーじゃなくてもいい

どうでもいいけど質問者の案件の詳細がわからない限りこれ以上の言い争いは不毛だぞ
2017/10/09(月) 18:11:27.11ID:CsWYGxTc
サーバーで復号したものを安全にBに持ってくるにはまた暗号化が必要なんでは?
2017/10/09(月) 18:12:13.10ID:CACjh+QN
ようやく自分の誤りに気づき終息させようとするの術

その前に嵐扱いした人に謝ったほうがいいんじゃないかなw
2017/10/09(月) 18:14:40.29ID:T0povuKJ
>>949
一時的な暗号鍵を使う
その鍵は保存されないしユーザーにはわからない
2017/10/09(月) 18:17:25.45ID:T0povuKJ
>>950
俺に言ってるのかな?何も間違ったことは言ってないけど
2017/10/09(月) 18:18:49.58ID:CACjh+QN
>>952

>>911の手法は少なくとも正しい
2017/10/09(月) 18:19:37.05ID:zWF+LHai
情報小出しにして質問する→勝手な憶測で返す→条件無視の議論に発展
このコンボやめてくれ
2017/10/09(月) 18:20:42.30ID:A2XN0/QV
いつまで続けんの?
956デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:20:54.51ID:qEhozSMZ
>>953
ユーザーが改変できるってさっきから指摘してるんたが?
逃げずにはやく答えてみろよ?
2017/10/09(月) 18:22:18.03ID:c41RoAYB
実にくだらない
2017/10/09(月) 18:24:21.88ID:r14Jr9yH
>>948
要するに、「デコーダー」側がハッカーと正規ユーザーを区別できなきゃ安全でも何でもないよね
2017/10/09(月) 18:24:23.29ID:CACjh+QN
>>956
まだ気づいてないのか?

よーく考えてみたら?
条件というか設定が間違ってる

それはBからAに送信するときの暗号化の話だから問題が逆
それにユーザーがコード改変して暗号化前に情報変えるのは無関係だろ
2017/10/09(月) 18:25:26.98ID:c41RoAYB
例えば>>959の文章でいうと

>まだ気づいてないのか?
>
>よーく考えてみたら?

の部分が不要
961デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:32:17.71ID:qEhozSMZ
>>959
気付いてないのはお前の方だろバカ
ユーザーの元に秘密鍵があれば改変したデータを作って利用できるだろ
2017/10/09(月) 18:34:29.22ID:c41RoAYB
>>961
>気付いてないのはお前の方だろバカ
不要
2017/10/09(月) 18:34:41.77ID:CsWYGxTc
>>951
今度はその一時的な鍵をサーバーとBの間でどうやって安全に交換するかって問題に帰着すると思うが。
2017/10/09(月) 18:36:12.76ID:T0povuKJ
>>958
全然要されてない
要するなら利用者がハッカーだとしてもこのやり方なら安全ってこと
2017/10/09(月) 18:37:34.88ID:CACjh+QN
やっぱり馬鹿の壁だな
理解できない相手に正論を言っても無駄
2017/10/09(月) 18:37:45.93ID:UEIAYP2F
>>961
> 気付いてないのはお前の方だろバカ
お前だよ w

> ユーザーの元に秘密鍵があれば改変したデータを作って利用できるだろ
ちゃんと質問者のレス読めよ
>>890
> アプリAで暗号化、アプリBで復号化、他者はBしか持っていないという状況
2017/10/09(月) 18:38:21.65ID:zWF+LHai
今日の赤IDは全部NGで問題ない
2017/10/09(月) 18:38:55.70ID:T0povuKJ
>>963
公開鍵を使うに決まってるだろ・・・
2017/10/09(月) 18:39:34.24ID:c41RoAYB
>>965
>やっぱり馬鹿の壁だな
>理解できない相手に正論を言っても無駄

不要
2017/10/09(月) 18:40:11.30ID:CACjh+QN
公開鍵と秘密鍵についてよくわかってないのが多いな

httpsじゃダメだって言うんだろうな
怖い怖い
2017/10/09(月) 18:41:35.96ID:oNj7uBjL
>>938
同じ鍵で解読できる暗号が2種類あった場合、利用者に複合鍵を渡すと両方解読されてしまう
サーバーで複合すればユーザー情報に基づいてひとつだけ解読可能みたいなこともできる

あと、ローカルでの解読と違ってサーバーに不正アクセスするのは犯罪になるという障壁もある
972デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:42:38.62ID:qEhozSMZ
>>966
はあ?
他者がBを持ってそのBに秘密鍵を置くなんてもってのほかだぞ?お前もバカか
2017/10/09(月) 18:43:23.56ID:c41RoAYB
>>972
>はあ?
>お前もバカか

不要
2017/10/09(月) 18:43:57.77ID:r14Jr9yH
>>964
安全じゃないでしょう。
質問者のケースの場合、暗号化されたデータをハッカーは利用可能。
要するに>>938
2017/10/09(月) 18:44:02.73ID:CACjh+QN
>>972
>>911を100回読めばいいよ

B側の秘密鍵は利用者ごとに作るんだよ…
976デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:44:41.48ID:qEhozSMZ
>>970
お前のようなバカはブラウザに秘密鍵があるんだな
怖すぎ
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況