android - 加密文本出现错误

标签 android encryption

您好,我有一些代码可以加密文本并将其显示在 textView 中并作为短信发送。

算法是(letterInt * constant)%29 = new letterInt

所以基本上是字母值除以 29 的余数乘以常数

字母表是这样的

private List<Character> alfabet = new ArrayList<Character>();
    alfabet.add('a');
    alfabet.add('b');
    alfabet.add('c');
    alfabet.add('d');
    alfabet.add('e');
    alfabet.add('f');
    alfabet.add('g');
    alfabet.add('h');
    alfabet.add('i');
    alfabet.add('j');
    alfabet.add('k');
    alfabet.add('l');
    alfabet.add('m');
    alfabet.add('n');
    alfabet.add('o');
    alfabet.add('p');
    alfabet.add('q');
    alfabet.add('r');
    alfabet.add('s');
    alfabet.add('t');
    alfabet.add('u');
    alfabet.add('v');
    alfabet.add('w');
    alfabet.add('x');
    alfabet.add('y');
    alfabet.add('z');
    alfabet.add('æ');
    alfabet.add('ø');
    alfabet.add('å');

问题是,每当 C 变得大于 1 时,文本就不会正确加密。 例如d = 4,但如果我选择 C ​​= 4,则输出变为 h (8),而不是 p (16)。

代码部分是这样的:

        char[] bogstaver = tekstString.toCharArray();
        for (int i = 1; i <= bogstaver.length; i++) {
            if (bogstaver[i-1] == ' ' || bogstaver[i-1] == '.' || bogstaver[i-1] == '?' || bogstaver[i-1] == '!' ||
                    bogstaver[i-1] == ',' || bogstaver[i-1] == ';' || bogstaver[i-1] == '+' || bogstaver[i-1] == '(' || 
                    bogstaver[i-1] == ')' || bogstaver[i-1] == '{' || bogstaver[i-1] == '}' || bogstaver[i-1] == ':'){
                    continue;   
            }

            if( CType == 1){
                C = Integer.valueOf(faktorA);
                CType = 2;
            }
            else if (CType == 2){
                C = Integer.valueOf(faktorB);
                CType = 3;
            }
            else if (CType == 3){
                C = Integer.valueOf(faktorE);
                CType = 1;
            }

            bogstaver[i-1] = alfabet.get((alfabet.indexOf(bogstaver[i-1]) * C)%29);
        }
        String endeligeTekst = new String(bogstaver);
        if (k == 1){
            krypteredeTekst.setText(endeligeTekst);
        }
        else{
            sendString(endeligeTekst, Nr);
        }

最佳答案

这就是您没有得到预期结果的原因;

e 是列表中的第 4 个值(索引为 0,a=0b=1 等。

对于 C=3,结果是 4*3=12,第 13 个字符(在索引 12 处)是 m,这是输出(我正如您的问题所述,无法获得 n

关于android - 加密文本出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16496933/

相关文章:

ruby-on-rails - 在内存 Ruby/Rails 中压缩和加密文件

java - HttpsURLConnection 中的什么方法调用实际发送了 HTTP 请求?

android - 打开android图片库,不在选择模式。是否可以?

java - 如何使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 清除 Activity Stack?

android - google maps api gradle 依赖关系无法解析

java - 尝试创建一个简单的加密程序

android - 错误:找不到:vectordrawable-animated-1.1.0

ruby - 如果我在 jruby 而不是 ruby​​ 中,为什么我的加密模块会返回不同的值

php - 将中间证书添加到 openssl_pkcs7_sign

c++ - UDP 加密 - 简单且安全