java - 移位密码不会移位数字,而是将其更改为大写字母,然后不会将其更改回来。 java

标签 java arrays encryption

我有一个需要加密的字符串,我正在使用移位密码。我得到了“代码中的梦想”的方法(http://www.dreamincode.net/forums/topic/190725-secret-code-i-ceasar-cipher/(第6篇文章))。这种移位密码不会加密数字,但会在加密过程中将它们更改为大写字母。但在解密过程中将它们更改为小写数字,比大写数字少 5。我不确定如何更改这两种方法以允许它们正确处理数字。

加密方法,该方法将字符串内容(即数组的内容)移动5位,然后传回保存方法,然后将内容保存到txt文件中。

    public String encodeWord(String content) {
      StringBuffer r = new StringBuffer();
      for (int i = 0; i < content.length(); i++) {
        char c = content.charAt(i);                 
        c = (char)('a' + (c -'a'+ 5) % 26);     
        r.append(c);                        
      }
      return r.toString();                   
    } // encode()

解密方法,这需要前面提到的txt文件,并且在加载函数期间将其加载回数组之前,将字符串的每一行传递到此处进行解密,然后传递回加载函数。

public static String decodeWord(String str) {
            StringBuffer r = new StringBuffer();
            for (int i = 0; i < str.length(); i++) {
               char c = str.charAt(i);
               c = (char)('a' + (c - 'a' + 21) % 26);
              r.append(c);                     
         }
            System.out.println(str);
            return r.toString();                   
          }

最佳答案

你需要类似的东西

if (is_digit(c))
    c = (char)('0' + (c - '0' + 5) % 10);
else if (is_letter(c))
    c = (char)('a' + (c - 'a' + 5) % 26);

关于java - 移位密码不会移位数字,而是将其更改为大写字母,然后不会将其更改回来。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23986080/

相关文章:

java - 如何消除模拟器启动错误

javascript - 将数组转换为字符串并获取子字符串

javascript - JavaScript [] 是如何工作的?

java - 如何在 Java 中使用 BouncyCaSTLe API 对密码进行加密和加盐?

python - Python 的快速 RC4 密码流?

java - 如何在java中的azure中的父目录下添加子目录?

java - 数据结构的工作方式类似于 Map,但允许随机更改键顺序

java - 如何使用 div 标签从下拉列表中选择元素

java - 硬java数组情况

使用随机填充的 Java DES 加密