Grady_1234 2019-10-21 10:34 采纳率: 90.9%
浏览 607
已采纳

这个问题应该怎么解决?求指导

4.本题根据密码表将密文解密为明文。为了提高数据的安全性,可将数字数据(如银行账号等)加密成字母密文保存,在使用时再解密还原成数值(例如:密文“agKxKaKa”用本程序可解密为20151212)。
本题解密方法可预先约定好一组字母密码存放在元组code密码表中,code[0]~code[9]分别表示数字“0”~“9”对应的密码;输入欲解密的密文(Ciphertext)并回车(输入字母“q”将推出程序),根据密码表转换成明文(Plaintext,码表中无法转换的代码用“?”代替,最后显示在标签上。)运行结果如下:图片说明

图片说明
密码表如下:code=('g','K','a','P','W','x','E','Q','f','t')
请在IDLE环境编写程序实现以上功能。

  • 写回答

2条回答 默认 最新

  • 小小小小小小小阳 2019-10-21 14:08
    关注

    package com.yysd;

    import java.util.Scanner;

    public class testmima {

    private final static String[] code = {"g","K","a","P","W","x","E","Q","f","t"};
    
    private final static String[] num = {"0","1","2","3","4","5","6","7","8","9"};
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入明文:");
        String codem = sc.nextLine();
        System.out.println(testmima.szTransZm(codem));
        Scanner scc = new Scanner(System.in);
        System.out.println("请输入密文:");
        String numm = scc.nextLine();
        System.out.println(testmima.zmTransSz(numm));
    }
    
    /**
     * 加密
     * @param numm
     * @return
     */
    public static String szTransZm(String numm) {
        String numtocode = "";
        for(int i = 0;i<numm.length();i++){
            System.out.println(numm.substring(i, i+1));
            numtocode +=  code[Integer.parseInt(numm.substring(i, i+1))];
        }
        return numtocode;
    }
    
    /**
     * 解密
     * @param codem
     * @return
     */
    public static String zmTransSz(String codem) {
        String numm = "";
        for(int i = 0; i<codem.length();i++) {
            System.out.println(codem.substring(i,i+1));
            int k = -1;
            for(int j =0;j<code.length;j++) {
                if(codem.substring(i,i+1).equals(code[j])) {
                    k = j;
                }
            }
            if(k == -1) {
                numm += "?";
            }else {
                numm += k;
            }
        }
    
        return numm;
    }
    

    }

    我用java 写的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题