X



ふらっと C#,C♯,C#(初心者用) Part131 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
垢版 |
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/
0851デフォルトの名無しさん
垢版 |
2017/10/08(日) 23:00:57.61ID:jXMyRhU9
皆さんありがとうございます
やっぱりweb系は覚えておいて損はないんですね
javascriptやphpはどうにも好きになれないんですが頑張ってみようかな。。
0853839
垢版 |
2017/10/08(日) 23:38:20.96ID:fHcFBAaS
TreeNodeで階層は分けれたのですがフォルダとURLの区別が付きません
お気に入りでURLとフォルダの区別をつけるようにするにはどうすればいいでしょうか?
0855デフォルトの名無しさん
垢版 |
2017/10/09(月) 07:40:56.77ID:Zzx1e3hO
>>845
おれもLisp/JavaScriptに同意
JavaScript名前が某クソ言語に似ているが面白い言語だと思う。
海外のGeekたちがその毒気に当たって色々なライブラリーが開発されて今に至る。
0856デフォルトの名無しさん
垢版 |
2017/10/09(月) 07:54:19.25ID:tvCeOLo3
需要は多いのにモジュールもろくに整備されないって変な言語だよな
Web系連中のいい加減さが現れた言語だ
0857デフォルトの名無しさん
垢版 |
2017/10/09(月) 08:01:34.71ID:pi4w3jwR
最近は状況が変わって来てるよ
とにかく古い環境で古い知識を勉強するとロクなことにならん
0860デフォルトの名無しさん
垢版 |
2017/10/09(月) 08:59:21.14ID:UEIAYP2F
>>859
cgiレベルならCでもperlでもたいして違わない気がする
文字列操作が多い分Cでやってたら本質的でないところで面倒なだけだし
0861デフォルトの名無しさん
垢版 |
2017/10/09(月) 09:04:59.65ID:Zzx1e3hO
>>860
c言語だとWebライブラリもないし全て自前で勉強にはなるだろ。
c言語でWebアプリなんか作っても難行苦行でしかないから作らんけどね。
サイボウズはc言語で作られてるらしいね。
0862デフォルトの名無しさん
垢版 |
2017/10/09(月) 09:11:47.98ID:CsWYGxTc
べつに、perlでやってもライブラリ使わなきゃWebの勉強としては変わらんだろ。
0863デフォルトの名無しさん
垢版 |
2017/10/09(月) 10:13:02.85ID:Y2JfmrWo
C言語でやるメリットってあるのかな
サイボウズってそんなにCPU使うようなサービスだっけ
0864デフォルトの名無しさん
垢版 |
2017/10/09(月) 10:31:59.67ID:Zzx1e3hO
>>863
サイボウズは20年も前に開発されたものだからな。
当時はc言語のcgiなんて普通にあった。2chもそうだったし。
0865デフォルトの名無しさん
垢版 |
2017/10/09(月) 10:34:00.35ID:VHpEwq8w
「初心者の質問スレ」で「C#に関係ない話題はやめてください」
>>844みたいなのはマ板でやれよ。板の意図とも違う
0866デフォルトの名無しさん
垢版 |
2017/10/09(月) 10:43:38.01ID:t8KOjWoA
>>861
なんでいきなりWebライブラリの話が出てくるんだよ w
cgi って言ってるんだからhttpヘッダー+生のhtmlでやるって話だろ
0868デフォルトの名無しさん
垢版 |
2017/10/09(月) 11:10:56.57ID:9hl0U6ca
プログラムの勉強にC#で簡単なアプリ作ってみたのだけど、配布する前に難読化した方がよいと聞いてConfuseEx試してみたらマルウェア判定されて即消されちゃうのだけど、どうしたら難読化したアプリを配布出来るのか教えて下さい
もしかして難読化する方が少数派なのでしょうか?
0869デフォルトの名無しさん
垢版 |
2017/10/09(月) 11:15:39.19ID:Vj0lVF94
>>868
難読化はITリテラシーの低い経営者を狙った詐欺
C#じゃ難読化しても技術保護にはならないし
そもそもリバースエンジニアリングされるほど高尚な物じゃないだろう?
本当に保護したい技術はサービスとして提供して物は一切公開しない
0870デフォルトの名無しさん
垢版 |
2017/10/09(月) 11:16:09.72ID:VHpEwq8w
>>868
何故難読化するのか理由がちゃんとあるのか?
隠さなければならないコードがない限り普通は難読化しない
0871デフォルトの名無しさん
垢版 |
2017/10/09(月) 11:24:51.27ID:EXlp17KP
難読化ってリフレクションには影響無いのか?
例外のスタックトレースまで難読化されるんだろ。
0872デフォルトの名無しさん
垢版 |
2017/10/09(月) 11:29:25.08ID:6DW9ok56
C#で難読化とか吹き込んだ奴に聞けよ
まともなコンサルなら耐タンパー性が必要ならまずC/C++で開発しろと言う
0875デフォルトの名無しさん
垢版 |
2017/10/09(月) 11:48:44.68ID:T0povuKJ
難読化って言葉通り読み辛くしてるだけだからな
初心者じゃなければ解析できるんだからあまり意味がない
0877デフォルトの名無しさん
垢版 |
2017/10/09(月) 11:52:12.53ID:A2XN0/QV
フロー難読化もあるから初級者上級者関係ない
解析は根気があるかどうかが問題だよ
0879デフォルトの名無しさん
垢版 |
2017/10/09(月) 12:00:45.54ID:9hl0U6ca
やはり普通やらないような事なのですね
なんとなくですが理解しました!
アプリ内に書いてある文字列で別のアプリで暗号化したものを復号化してみるアプリだったのですが、文字列が丸見えらしく知り合いに聞いてみたら難読化してみたら?との事でした
要は文字列だけ隠したいのですが何かしら方法はあるものなのでしょうか?
0881デフォルトの名無しさん
垢版 |
2017/10/09(月) 12:04:20.36ID:VHpEwq8w
>>879
本来の意図が分からないが元のアプリ内の文字列を最初から暗号化したら済む
解析もできないようにしたいのだったら難読化だろうが何だろうが無理
手間がどれだけかかるかだけの違いしかない
0882デフォルトの名無しさん
垢版 |
2017/10/09(月) 12:08:39.18ID:3IBabimx
パスワード c# プログラム内
でググったら
ハッシュがどうのこうのってのは出てきた
使えるかな?
0885デフォルトの名無しさん
垢版 |
2017/10/09(月) 12:45:14.62ID:c41RoAYB
ツールを使ってjsのコードを難読化し、ユーザーはツールを使ってそれを可読化する
人間って面白いね
0887デフォルトの名無しさん
垢版 |
2017/10/09(月) 12:51:39.85ID:Zzx1e3hO
>>879
そもそも、復号キーをコードの中に埋め込んでいるのが間違いだろうけどね。
復号キーを暗号化しても復号アルゴリズムがコードの中にあったら無意味だよ。
0888デフォルトの名無しさん
垢版 |
2017/10/09(月) 12:54:13.72ID:T0povuKJ
>>887
そういう場合は秘密鍵をサーバーに、プログラムには公開鍵だけを持たせるやり方が簡単
ネットを介さない環境で使用するアプリとかなら仕様がわからんんがキーコンテナを使え
0890デフォルトの名無しさん
垢版 |
2017/10/09(月) 13:21:52.47ID:9hl0U6ca
みなさまありがとう
アプリAで暗号化、アプリBで復号化、他者はBしか持っていないという状況を想定して、アプリB内の復号化に使う文字列をなるべく隠したくて質問させて頂きましたが難しそうですね

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

ゆくゆく作りたいアプリのために始めてみましたが、ある程度解析しづらいらしいC++などで最初から考え直しても良いのかもしれません
アドバイスありがとうございました
0891デフォルトの名無しさん
垢版 |
2017/10/09(月) 13:49:55.29ID:KtpP5XlM
>>890
鍵を外部ファイルにすればいいだけだろ
なんでcでやるとかサーバー使うみたいなトンチンカンな方向に行ってしまうんだ
0892デフォルトの名無しさん
垢版 |
2017/10/09(月) 14:00:57.24ID:qEhozSMZ
>>891
外部ファイルだと中身見れるから意味ないだろバカか
0894デフォルトの名無しさん
垢版 |
2017/10/09(月) 14:13:38.87ID:T0povuKJ
外部ファイルが許されるのは入力パスワードに対してのハッシュくらいだろ
879の案件には合わない
0897デフォルトの名無しさん
垢版 |
2017/10/09(月) 14:22:02.94ID:6DW9ok56
Bで作った公開鍵をAに渡して暗号化させればいいだけの話でないのん
秘密鍵だけで無理にやろうとするから当たり前のように無理が出るのでは
0899デフォルトの名無しさん
垢版 |
2017/10/09(月) 14:40:20.42ID:qEhozSMZ
>>896
トンチンカンなバカレスするお前は初心者以下
0902デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:01:38.21ID:qEhozSMZ
>>900
じゃあ早く俺のレスに答えて
0904デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:02:45.85ID:M//uOX8+
>>887
無意味ではないよ
文字列抜き出すのとアルゴリズムの解析とでは
必要な時間が全く違うからね
それこそ難読化の出番
0906デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:06:38.70ID:LtbrVXIC
埋め込みでリソース持つのと、外部ファイルで持つのってセキュリティそんなに変わらんでしょ?
0907デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:07:25.29ID:ZyuEIFSh
そもそも暗号化手順+暗号キーを知られたくないならまだしも暗号キーをとにかく知られたくないというのが分からない
元の質問者は終了宣言しているし外野が条件変えながら議論しても無意味
0909デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:10:52.65ID:qEhozSMZ
>>908
逃げんな
早く答えろ
0911デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:18:53.37ID:KtpP5XlM
公開鍵で暗号化プログラムA
秘密鍵で復号プログラムB
Bの利用者は鍵ペアを生成
外部ファイルとして秘密鍵をプログラムに渡す
公開鍵を通信相手に渡す
終わり
0912デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:22:46.29ID:KtpP5XlM
コード書けりゃプログラマじゃないぞ
お前らはC#なんてやっとらんでITパスか基本情報でも取ってこい
0916デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:54:47.16ID:F9+aoLk/
if(HashPasswordForStoringInConfigFile(パスワード, "sha1").ToLower() == ハッシュ文字列)
{/*編集可能処理*/}

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

ユーザー全員に共通パスワード持たせたいならセキュリティ諦めてリソース持つぐらいで十分
できれば中間にAPI噛ませて何かあった時の被害をコントロールできるようにしておいたほうがいい
0920デフォルトの名無しさん
垢版 |
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>型の場合投げられません。
どこがまちがっているでしょうか?
0922デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:14:46.63ID:qEhozSMZ
>>911
はあ?
秘密鍵丸見えじゃ無意味って理解出来ないの?
0925デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:23:16.60ID:qEhozSMZ
>>923
違う用途ならともかくこの件においては
データ改変できて無意味
0927デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:28:38.64ID:r14Jr9yH
>>920
型以外の条件を一切変更していないのに(ダメな人は他の条件も変えてたりするから困るw)
TがMyDataの場合だけ例外は発生するのであれば、
普通に考えてMyDataがXMLシリアル化可能な条件を満たしてないんでしょう。

例えばデフォルトコンストラクタがないとかそもそもpublicなクラスじゃないとか。
0928デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:28:45.97ID:qEhozSMZ
>>926
は?
間違ったやり方をやるわけないだろバカ
0931デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:42:16.72ID:CACjh+QN
馬鹿の壁みたいだ

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

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

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

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

送った内容は秘密鍵を持ってないと中身がみえないので安全
0933デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:48:41.75ID:CACjh+QN
秘密鍵を相手に渡すのは馬鹿の極み
公開鍵は誰に見られてもいいので
難読化とかそういう以前の問題

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

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

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

それってハッキングする側から見たら、単にサーバーの認証を突破するひと手間が
増えただけの話じゃないの?
0941デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:55:23.10ID:qEhozSMZ
>>933
ユーザーに改変されたくないデータをやり取りする場合そのやり方だと無意味
0942デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:56:26.56ID:CACjh+QN
うっわ無知な馬鹿に絡まれた
最悪・・・

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

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

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

その前に嵐扱いした人に謝ったほうがいいんじゃないかなw
レス数が950を超えています。1000を超えると書き込みができなくなります。

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