暗号化(のようなもの)
シナリオ等の暗号化について調べています。
方向性と注意点はおおよそつかめた気がします。
以下、暗号化(の一例)のざっくりした説明です。
まずTextEncoderと言うものを使うと文字列を8ビットの数値(0~255)の配列にする事が出来ます。
const encoder = new TextEncoder();
const arBunsyo = encoder.encode('これはウサギです');
元の文字列:これはウサギです
元の文字列数値配列(arBunsyo):
227,129,147,227,130,140,227,129,175,227,130,166,227,130,181,227,130,174,227,129,167,227,129,153
この数値の配列に対してTextDecoderと言うものを使えば、元の文章が作れます。
let utf8decoder = new TextDecoder();
const Fukugou = utf8decoder.decode(arBunsyo);
復号化された文字列:これはウサギです
つまり
文字列 → 数値の配列 → 元の文字列
と言う変換が出来ます。
パスワードも同じように8ビットの数値(0~255)の配列にすると、例えば
パスワード:’ぱすわーど?’
パスワード数値配列:
227,129,177,227,129,153,227,130,143,227,131,188,227,129,169,239,188,159
簡単な暗号化としては、元の文字列の数字配列にパスワードの数字配列を足して(256を超えるなら256を引いて)やれば、暗号化したと言えるでしょう。(パスワード配列の方が短いのが一般的でしょうが、順番に何度も使う)
例えば以下のような数字の配列になります。
strCrypt=[198,2,68,198,3,37,198,3,62,198,5,98,198,3,94,210,62,77,198,2,88,198,2,50]
この配列を文字列にして、パスワードの数字を引いて(0以下なら256を足す)utf8decoder.decode(strCrypt)やれば復号化できます。
ただし、この場合の暗号化文字列は
�D�%�>�b�^�>M�X�2
となり、文字化けします。
文字化けしても復号化できれば問題はないのですが、うまく行くとは限らないので数字配列(これなら文字化けの要素は無い)を元に、文字化けしないような暗号化文字列を作ればうまく行きそうですね。