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