凯撒密码解密字符串。

利用map,使用凯撒密码(k=3)将字符串“trphzdvqrw exlowlqdgdb.”进行解密,结果错误。

package com.test.kaisamima;

import java.util.HashMap;
import java.util.Map;

/**

  • 凯撒密码

  • @date 2022/04/06

  • /
    public class Kaisamima {
    private static final String str = "abcdefghijklmnopqrstuvwxyz";

    public static void main(String[] args) {

      // TODO Auto-generated method stub
      Map<Character, Character> map = init(3);
      String s = "trphzdvqrw exlowlqdgdb.";
      char[] ss = s.toCharArray();
      StringBuffer sb = new StringBuffer();
      for (char c : ss) {
          Character cc = map.get(c);
          if (cc == null) {
              cc = c;
          }
          sb.append(cc);
      }
      System.out.println(sb + "===========");
    

    }

    private static Map<Character, Character> init(int k) {

      Map<Character, Character> map = new HashMap<Character, Character>();
      char strs[] = str.toCharArray();
      for (char c : strs) {
          int i = str.indexOf(c);
          int index = i + k;
          if (index >= strs.length) {
              index = index % strs.length;
          }
          map.put(c, strs[index]);
      }
      return map;
    

    }
    }

代码呢??