0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

超速で暗号化するアルゴリズム

Posted at

今回は 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]);
にして下さい。


以上、私が考えた
暗号化のアルゴリズムを紹介しました。

高速で動作させる事だけを
目的としたコードなので
「暗号化を処理速度の関係で実装していない」
「暗号化を強化したい」
と言った場合に、ご利用頂けると幸いです。

この記事が皆さんの開発の助けになれますように。
閲覧ありがとうございました。

0
0
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?