| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 997 人关注过本帖
标题:java 凯撒密码
只看楼主 加入收藏
qwe9527
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-4-8
收藏
 问题点数:0 回复次数:2 
java 凯撒密码
写一个关于凯撒密码的程序。
要求可以输入正整数和复数,包括大小写

Enter shift: 4
Enter message: HELLO
Encode message: LIPPS

另一个是只要求翻译大写字母不翻译小写字母


(小弟初学,跪求大神帮忙,在线等
搜索更多相关主题的帖子: java 在线 Enter 正整数 message 
2014-04-08 10:32
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
收藏
得分:0 
下面的信息引用自百度百科。

所谓的“恺撒密码”,它是一种替代密码,
通过将字母按顺序推后起3位起到加密作用,
如将字母A换作字母D,将字母B换作字母E。
因据说恺撒是率先使用加密函的古代将领之一,
因此这种加密方法被称为恺撒密码。
这是一种简单的加密方法,这种密码的密度是很低的,
只需简单地统计字频就可以破译。
现今又叫“移位密码”,只不过移动的位数不一定是3位而已。

原题的意思是说,正整数和负数(复数是笔误吧)吗?
1个程序用来翻译大小写信息,1个程序仅用来翻译大写字母?
2014-04-19 20:22
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
收藏
得分:0 
只要求翻译大写字母不翻译小写字母的完整的CaesarCipher.java代码:

程序代码:
import javax.swing.*;

public class CaesarCipher {

    public static void main(final String[] args) {
        try {
            Integer enterShift = Integer.valueOf(JOptionPane.showInputDialog("Enter shift:"));
            String enterMessage = JOptionPane.showInputDialog("Enter message:");
            String encodeMessage = CaesarCipher.encode(enterMessage, enterShift);
            JOptionPane.showMessageDialog(null, encodeMessage, "Encode message:", JOptionPane.PLAIN_MESSAGE);
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Shift must be integer!", "Warning:", JOptionPane.WARNING_MESSAGE);
        }
    }

    public static String decode(String enc, int offset) {
        return encode(enc, -offset);
    }

    public static String encode(String enc, int offset) {
        offset = offset % 26 + 26;
        StringBuilder encoded = new StringBuilder();
        for (char i : enc.toCharArray()) {
            if (Character.isUpperCase(i)) {
                encoded.append((char) ((i - 'A' + offset) % 26 + 'A'));
            }/* else if (Character.isLowerCase(i)) {
                encoded.append((char) ((i - 'a' + offset) % 26 + 'a'));
            }*/ else {
                encoded.append(i);
            }
        }
        return encoded.toString();
    }
}


JDK1.8.0上编译通过,楼主要求的用例的测试结果OK
包括大小写的话,可以把encode方法里的注释打开

如果必须在控制台窗口中运行的话,可以把JOptionPane相关处理改动一下
方法建议参考下面的帖子:
https://bbs.bccn.net/thread-430215-1-1.html
收到的鲜花
  • qwe95272014-04-23 10:43 送鲜花  3朵   附言:我很赞同
2014-04-20 10:33
快速回复:java 凯撒密码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021529 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved