【问题标题】:Increment char by another char in a string将字符串中的另一个字符增加一个字符
【发布时间】:2017-03-27 04:30:03
【问题描述】:

我正在为一个项目开发加密/解密程序。对于加密方法,用户输入一个密钥(全部小写,无空格),文件中的所有字母都按密钥中每个字母的值移动(a = 0,b = 1,c = 2 等)。

示例: 键 = abc

文件:文件中的单词

加密文件:wptdt kn b himg

'w' 增加了 'a' (0) 所以它保持为 'w'。

'o' 移动了 'b' (1) 所以它增加了 1 个字母到 'p' 等等。

使用键中的最后一个字母后,键返回到第一个字母。此外,空格会被忽略。

我目前对如何通过键中的每个字母递增一个字母感到困惑。

public static String encryptLine(

任何帮助将不胜感激! 谢谢

【问题讨论】:

标签: java encryption


【解决方案1】:

尝试使用此代码

public static String encrypt(String k,String l){
        String ans="";
        int index=0;
        for(int i=0;i<l.length();i++){
            if(l.charAt(i)==' '){
                continue;
            }
            ans=ans+Character.toString((char)((int)l.charAt(i)+((int)k.charAt(index)-97)));
            if(index==k.length()-1){
                index=0;
            }else{
                index++;
            }
        }
        return ans;

    }

【讨论】:

  • 有没有办法在本网站之外与您联系?或者,如果您收到此通知,可以通知我吗?
【解决方案2】:
public static String encryptLine(String key, String line) {
    final StringBuffer encryptedLine = new StringBuffer();

    IntStream.range(0, line.length()).forEach(i->{
        int nonSpace = ((int) line.chars().limit(i+1).filter(j -> j == ' ').count());
        encryptedLine.append( line.charAt(i) == ' '? line.charAt(i): (char) (key.charAt((i - nonSpace) % key.length()) - 'a' + line.charAt(i)));
    });

    return encryptedLine.toString();
}

文本:文件中的单词-->wptdt kn b himg

不过,这只是一个快速提示。对于项目使用,预计会有更多的检查。

【讨论】:

    【解决方案3】:

    试试这个:

    Source Code

    public static String encrypt(String plainText, String encKey) {
        StringBuilder encryptedText = new StringBuilder();
        char[] encArray = encKey.toCharArray();
        int encArrayLen = encArray.length;
        int cnt = 0;
        for (int i = 0; i < plainText.length(); i++) {
            if (plainText.charAt(i) != ' ') {
                char c = (char) (plainText.charAt(i) + (encArray[cnt] - 'a'));
                encryptedText.append(c);
            } else {
                encryptedText.append(plainText.charAt(i));
                cnt=cnt-1;
            }
            cnt++;
            if (cnt == encArrayLen) {
                cnt = 0;
            }
        }
        return encryptedText.toString();
    }
    

    【讨论】:

    • 有没有办法在本网站之外与您联系?或者,如果您收到此通知,您可以通知我吗
    猜你喜欢
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2015-06-18
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2015-02-11
    相关资源
    最近更新 更多