Re: .NET (C#) System.Security.Cryptography
池田です。SCIS参加中。
yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes:
> 新城@筑波大学情報です。こんにちは。
>
> In article <86bq7grcxm.fsf@bsd2.4bn.ne.jp>
> Yoshitaka Ikeda <ikeda@4bn.ne.jp> writes:
>> > 他にまともな API は .NET (C#) にはないのでしょうか。IV フィー
>> > ルドに暗号化したいデータを突っ込んでも、取出せない取出す方法
>> > が見つかりません。
>> ModeをECBにしてやれば、IVは無視すると思います.
>
> なるほど。Exclusive OR は、後で自分で取ると。Exclusive OR を
> 自分でやるとでも最後の Padding も、自分でやらないといけない
> のか。
ECBはそこら辺は見ないので、当然Paddingは自分でやる必要があります。
>> 他のモード(CBCとかCTRなら)だと使うと思いますが.
>> って、CTRはないのか.
>
> C# (.NET) にはみつかりません。
>
> Java には CTR モードはありましたが、カウンタ値を設定する方法
> がみつからなくて。これって、OFB の単純化って書いてあるけど、
> 頭からシーケンシャルって意味なのかな。ランダム・アクセスって
> どうするんだろう。CTR モード使いたいのは、ランダム・アクセス
> できるからなんだけど。
OFBとは全く違います。OFBはどちらかというとフィードバックシフトレジスタの
フィードバック関数がブロック暗号になったというイメージのほうが正しいです。
CTRは、出力とは全く関係ないカウンタが逐次変わっていきます。
一般にはインクリメントが実装されることが多いです。ランダムアクセスが楽だし。
> http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/security/StandardNames.html
> http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/security/crypto/CryptoSpec.html
訳がわるいのか原文がわるいのか。暗号のことを知らない人が書いた文章にしかみえない。
initメソッドで設定できるように読めるけど、どれを使えばいいのかわかんないし。
> CTR の nonce やカウンタのビット長はどうやって指定するんだろう。
CTRのカウンタは多分ブロック長と同じです。ブロック長より長く取ろうと思ったら、
インクリメントではだめです。1周した後同じ入力になっちゃうし。
#LFSRを使ったり、ハッシュ関数をはさんだりすればOK
>> > CTR モードがあれば、それでもいいんだれれど。ぼそっ。
>> 悩むくらいなら、AESくらいなら組んじゃった方が速いかも.
>
> 素人には、けっこう難しいです。若者の演習にはよいかもしれませ
> んが。その辺り、バグで責任取りたくないというのが本当の所。
オープンソースな何かから引っ張ってくるとか。
http://xyssl.org/code/source/aes/
これとか。
--
I LOVE SNOOPY! でつ
Yoshitaka Ikeda mailto:ikeda@4bn.ne.jp
My Honeypot: honey@4bn.ne.jp <-don't send this address
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735