Java密码学仿射密码错误输出

标签 java encryption cryptography output

我正在尝试执行仿射方法,但我的输出完全错误,我不知道如何修复它,任何人都可以查看它并告诉我出了什么问题

public void Affine(int a, int b){
    StringBuilder builder = new StringBuilder();
    int len = jMesaj.getText().length(); //length of the input
    for (int i = 0; i < len; i++){
        char currentChar = jMesaj.getText().charAt(i);
        char finalChar = ((char)(currentChar +(a*i + b)% 26));
        builder.append(finalChar);
    }
    String result = builder.toString();
    builder.delete( 0 , builder.length() -1 );

    jEncryptionResult.setText(result); //display result in jTextArea 
}

最佳答案

在我看来,你假设'A' = 1,'B' = 2,等等。此外,affine algorithm略有不同。如果您使用 26 作为模块,那么我会认为您正在从“A”编码到“Z”。如果这是真的,那么尝试在此行中添加偏移量,如下所示:

char finalChar = (char)((a*(currentChar - 'A') + b) % 26 + 'A');

关于Java密码学仿射密码错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18260117/

相关文章:

java - 为用户电子邮件获取空值 - restfb

java - SSL 和 NIO 非阻塞套接字

c - unsigned char 的打印每次都不同

c# - Foreach循环检查空字符串并为其赋值c#

cryptography - 为什么 XOR 是组合哈希值的默认方式?

Java 泛型 : why does this nested template fail?

Java split() 方法最后去除空字符串?

javascript - native 加密加密抛出 DOMException

cryptography - 具有随机移位加密的二进制字符串

java - 加密货币