Encryption
數字密碼學
是否有任何算法能夠安全(對稱)加密 M 位數字消息(N < M)中的 N 位數字?我對 N = 10 和 M = N + 3 的特定情況特別感興趣。我嘗試了最著名的算法,如 DES 和 AES,但沒有成功。有誰知道有這樣的限制加密消息的方法?
一種方法是使用格式保留加密方法。
這是一種對稱加密方法,旨在將(可能)小消息轉換為大小完全相同的加密消息。例如,它可能需要 13 個十進制數字的字元串,並將它們加密成 13 個十進制數字的字元串。
一種這樣的方法是NIST SP 800-38G中的 FF3 方法;如果你設置 radix=10,那麼它可以加密一個 13 位數字的字元串,給你一個 13 位數字的字元串(這正是你想要的)。
這是您在範例中使用它的方式:您將使用您的 $ N=10 $ 位數,並將其擴展到 $ M=13 $ 通過附加 3 個 0 的數字。然後,您將您的 13 位字元串(和密鑰)交給 FPE 算法進行加密,它會給您另一個 13 位字元串;那是你的密文。解密則相反;FPE解密這13位數字,然後去掉最後三個0(如果不是0,則密文無效)
現有的加密消息的技術不能用偶數個基數表示;但是,由於您的消息可以,因此沒有理由涉及這些。
800-38G中的三種方法都可以處理radix=10;我建議使用 FF3,因為 NIST 草案中為 FF1 列出的虛擬碼是錯誤的(他們的解密程式碼與其加密程式碼不完全相反;是的,NIST 知道這一點),並且 FF2 知道(學術)弱點。