我正在尝试使用flutter在android studio上创建一个密码应用程序。现在,我正在开发一个简单的Atbash密码,但是在尝试对其进行测试时遇到范围错误。这些是加密和解密代码:
@override
String encrypt(String plaintext, {String key}) {
String alfa = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String alfaReverso = "";
for(int i = alfa.length-1; i > -1; i++){
alfaReverso += alfa[i];
}
String encryText = "";
for (int i = 0; i < plaintext.length; i++){
if(plaintext.codeUnitAt(i) == 32){
encryText += " ";
}
else{
int count = 0;
for(int j = 0; j < alfa.length; j++){
if(plaintext[i] == alfa[j]){
encryText += alfaReverso[j];
break;
}
}
}
}
return "ENCRYPT Plain = " + encryText;
}
}
@override
String decrypt(String cyphertext, {String key}) {
String alfa = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String alfaReverso = "";
for(int i = alfa.length-1; i > -1; i++){
alfaReverso += alfa[i];
}
String dencryText = "";
for (int i = 0; i < cyphertext.length; i++){
if(cyphertext.codeUnitAt(i) == 32){
dencryText += " ";
}
else{
int count = 0;
for(int j = 0; j < alfaReverso.length; j++){
if(cyphertext[i] == alfaReverso[j]){
dencryText += alfa[j];
break;
}
}
}
}
return "ENCRYPT Plain = " + dencryText;
}
当尝试运行它时,这是我得到的范围异常:
I / flutter(6004):RangeError(索引):无效值:不在0..25范围内,包括26:
我知道这与我使用的字母有关,但是我不知道如何解决。
答案 0 :(得分:1)
从最高索引开始时出现错误:
C.singleton_class.send(:define_method, :x) {...}
您的索引必须下降,您正在使用++。
for(int i = alfa.length-1