我正在为项目开发加密/解密程序。对于加密方法,用户输入一个键(全部小写没有空格),文件中的所有字母都移动了键中每个字母的值(a = 0,b = 1,c = 2等)。 / p>
实施例: Key = abc
文件:文件中的文字
加密文件:wptdt kn b himg
' W'是因为' a' (0)所以它保持' w。
'○'被' b' (1)所以它增加了1个字母到' p'等
使用密钥中的最后一个字母后,密钥将返回第一个字母。此外,空格被忽略。
我目前对如何通过键中的每个字母递增一个字母感到困惑。
public static String encryptLine(
任何帮助将不胜感激! 感谢
答案 0 :(得分:0)
尝试使用此代码
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;
}
答案 1 :(得分:0)
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();
}
文字:文件中的文字 - &gt; wptdt kn b himg
然而,这只是一个快速提示。对于项目使用,预计会进行更多检查。
答案 2 :(得分:-1)
试试这个:
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();
}