はじめに
Rijidaelを使用したAESの文字列暗号化プログラムを書いていたが、ブロックサイズを初期値の128ビットから256ビットにしたい!と思ったときに、できる時とできない時があることがわかった。
なんでだろう?と思って調べてみると、どうやらRijindaelはプロジェクトが.NET Frameworkか.NET Coreかで仕様が違うというらしいことがわかった。
#サンプルプログラム
Sample.cs
using System.Security.Cryptography;
class Sample
{
static void Encrypt()
{
//Rijindaelのオブジェクトを作成
using (RijndaelManaged rijndael = new RijndaelManaged())
{
//Rijindaelのブロックサイズの設定
//初期値128ビットを256ビットに変更
rijndael.BlockSize = 256;
}
}
}
#プログラムの詳細
.NET FrameworkではBlockSizeの初期値128を256に変更することができるが、.NET Coreでは「System.PlatformNotSupportedException: 'BlockSize must be 128 in this implementation」エラーが発生してしまう。
#なぜ?
どうやら、.NET CoreではRijinDaelはブロック長256bitはサポートされていないらしく、今回のようなエラーが発生してしまったとのこと。
反省点としては、.NET Frameworkと.NET Coreの区別がまだしっかりついてなかったのでちゃんとつけるようにしていくこと…