0

解碼結果

仿射密碼
A
B

編碼結果

仿射密碼
A
B

關於仿射密碼 (Affine Cipher)

仿射密碼是一種透過替換文本中的字符來進行加密的單表代換密碼。

字符的替換透過以下公式進行。

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 以外沒有其他公因子。例如,當 m = 26 時,a = 4 是無效的,因為它除了 1 以外還能被 2 整除。在 DenCode 中,如果指定了無效的 a,將不進行轉換直接傳回原始字符。

其他語言支援

除了拉丁字母,還支援西里爾字母和日語的平假名/片假名。

使用 a = 5, b = 3 加密的結果分別如下。

西里爾字母
加密前 : АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
加密後 : ГИНТЧЬБЖЛРХЪЯДЙОУШЭВЗМСЦЫАЕКПФЩЮ

m = 32 (32個字符)。

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

字符順序遵循 Unicode 定義。「ゕ」「ゖ」「ヵ」「ヶ」以及「ヷ」「ヸ」「ヹ」「ヺ」不屬於加密對象,請注意。

m = 84 (84個字符)。