LoginSignup
0
0

More than 1 year has passed since last update.

bouncyCastleのrijndealクラスをpowershellで再現する

Last updated at Posted at 2022-05-24

目的

bouncyCastleで使われていたjavaのrijndealクラスによる暗号化、復号処理をpowershellで再現する内容

鍵長は256ビットになっていなければならない。

rijndealとは

暗号化処理の規約になったAESとして採用された暗号化方法

IV(Initial Vector)と内容を暗号化した文字列を使って
暗号化文字列が作られている。

この時暗号化した文字列(鍵長)を128ビット、192ビット、256ビットの3つを選ぶことができた。

AESは統一化のために、128ビットで固定化されている。

RijnDealクラスをPowerShellで実装する際の注意

powershellは.NETで構成されているが
AESの暗号化のロジックだとうまく作れない。
rijndealだと鍵長を256ビットにできるが、AESでは128ビット固定になってしまう。128ビット以外はエラーになってしまう。
https://sp.otsuka-shokai.co.jp/words/aes.html#:~:text=AES%E3%81%A8%E3%81%AF,%E9%AB%98%E3%81%84%E3%81%A8%E3%81%84%E3%82%8F%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82

まあAES自体が鍵長を128bitに固定して、単純化と互換性を担保させてるらしいから、rijndealのように128bitや256bitも可能としてるのが古い規約のようだ。

今回はbouncyCastleで使われていたrijndealクラスによる暗号化処理をpowershellで再現する内容だったので
鍵長を32byte、つまりは256bitにしなくてはいけない。
だからAESクラスでは実装が不可能なので、推奨されていない昔のrijndealクラスを使って実装する必要がある。

PowerShellで実装する際の注意

実装としては、AESとほぼ一緒で使うクラスがrijndealになり
keysizeを256にするだけである。
http://programmers.high-way.info/vb/aes.html

keysizeを128bit以外にしなくてはならない時はrijndealを使おう。

おそらく元々の仕様に合わせる…などない限りはAESの規格で暗号化することになると思う。

正直今回のニーズが出ること自体稀だと思うので、もし同じような人がいたら参考にして欲しい。

おまけ

powershell coreで組むことは不可能です。
https://qiita.com/MuscleProgramer/items/99182c89a42a34826cd4

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0