今回は byte 配列を
超速で暗号化する手法を考えたため
紹介したいと思います。
この手法で暗号化した byte 配列を
AES で暗号化する事で
暗号化キーの総当たりによる突破が
困難になると考えています。
AES をより強固にするための
手法と考えていますので
AES での暗号化は必須と思われます。
超速で動作するため
AES の直前に実施しても
動作は遅くならないハズです。
紹介するコード
public static void MyEncryptByteArray(byte[] byteArray)
{
for(long i = 1; i < byteArray.Length; i += 2)
{
byteArray[i] = (byte)(byteArray[i] + byteArray[i - 1]);
}
}
public static void MyDecryptByteArray(byte[] byteArray)
{
for (long i = 1; i < byteArray.Length; i += 2)
{
byteArray[i] = (byte)(byteArray[i] - byteArray[i - 1]);
}
}
やっている事はシンプルで
2 要素につき 1 回直前の要素を
足しているだけです。
復号化はその逆をします。
見て分かる通り操作が少ないため
かなり高速で動作するハズです。
しかしながら byte 配列を見ただけでは
どのように暗号化されているかは
分からないハズです。
サーバーサイドなど
コードを解析できない箇所で実施した場合は
強力な暗号化と言えるハズです。
なのでセキュリティとしては
実施する価値があると考えています。
やろうと思えば
「3 要素につき 1 回にする」
「開始インデックスを変える」
「足す・引くを逆にする」
等の調整を行う事もできます。
設定でオーバーフローを許可しない場合は
byteArray[i] = (byte)(255 - byteArray[i]);
にして下さい。
以上、私が考えた
暗号化のアルゴリズムを紹介しました。
高速で動作させる事だけを
目的としたコードなので
「暗号化を処理速度の関係で実装していない」
「暗号化を強化したい」
と言った場合に、ご利用頂けると幸いです。
この記事が皆さんの開発の助けになれますように。
閲覧ありがとうございました。