0

デコード結果

アフィン
A
B

エンコード結果

アフィン
A
B

アフィン暗号について

アフィン暗号は、文章の文字を他の文字に置換することで暗号化する単一換字式暗号のひとつです。

文字の置換は、以下の計算式により行います。

E(x) = (ax + b) mod m

m は変換する文字の種類を表します。 x は文字を 0 から m - 1 までの数字に置き換えたものです。 ab が暗号化のキーです。

例えば、「ABCDEFGHIJKLMNOPQRSTUVWXYZ」の26文字の英字の場合、 m = 26 、 x は A ~ Z を数字に置き換えた 0 ~ 25 となります。

文字ABCDEFGHIJKLMNOPQRSTUVWXYZ
x012345678910111213141516171819202122232425

a = 5, b = 3 とした場合は以下の流れで暗号化されます。

暗号化前SECRET
x184217419
(5x + 3)932313882398
(5x + 3) mod 26152313102320
暗号化後PXNKXU

a = 5, b = 3 で全ての英字を暗号化した結果は以下の通りです。

暗号化前: ABCDEFGHIJKLMNOPQRSTUVWXYZ
暗号化後: DINSXCHMRWBGLQVAFKPUZEJOTY

a = 1, b = -3 を指定するとシーザー暗号、 a = 1, b = 13 を指定するとROT13、a = -1, b = -1 を指定するとアトバシュ暗号と同じ結果が得られます。

a は、 m と互いに素の数値を指定する必要があります。これは、 am を割り切れる数値は 1 のみである必要があるということです。例えば、 a = 4, m = 26 の場合は、 1 以外に 2 でも割り切れるため、指定できません。DenCodeでは、無効な a が指定された場合は、元の文字を変換せずにそのまま返します。

その他の言語サポート

ラテン文字の他に、キリル文字、日本語の平仮名/片仮名をサポートしています。

a = 5, b = 3 で暗号化した結果は、それぞれ以下の通りです。

キリル文字
暗号化前: АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
暗号化後: ГИНТЧЬБЖЛРХЪЯДЙОУШЭВЗМСЦЫАЕКПФЩЮ

m = 32 (32文字) です。

日本語の平仮名/片仮名
暗号化前: ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゔ
暗号化後: いぉぎこじそぢでぬぱぶほむゅりわゔぅおくごすぞっとねひぷぼめゆるゐぁうかぐさずたつどのびへぽもょれゑあぇがけざせだづなはぴべまゃよろをぃえきげしぜちてにばふぺみやらゎん
暗号化前: ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴ
暗号化後: イォギコジソヂデヌパブホムュリワヴゥオクゴスゾットネヒプボメユルヰァウカグサズタツドノビヘポモョレヱアェガケザセダヅナハピベマャヨロヲィエキゲシゼチテニバフペミヤラヮン

文字の順序は、Unicodeにおける定義順です。「ゕ」「ゖ」「ヵ」「ヶ」や「ヷ」「ヸ」「ヹ」「ヺ」は暗号化の対象ではないことに注意してください。

m = 84 (84文字) です。