密码学(2)-古典密码学

古典密码学虽然现在已经不再使用,但其反映了密码设计和破译的基本思想,是学习密码学的入口。
古典密码学主要有两种体制:置换密码和代换密码。

置换密码

根据一定的规则重新排列明文,以便打破原有的结构特性。即改变字符的原始位置,但字符还是那些字符。

  1. 列置换:比如明文m = “Beijing 2008 Olympic Games”,
    密钥=(1 4 3)(5 6)。

该密钥表示:一个括号一个循环,f(1) = 4,f(4) = 3 , f(3) = 1,这里3是括号的末尾,所以f(3)的值就循环到了括号的最前面,即1。(5 6)类似,f(5) = 6 , f(6) = 5。少了2,未表示出来的等于其自身,所以f(2) = 2。其中f(a) = b 表示 a 列和 b 列的数据交换。由于它最大的数是6,则表示分组长度是6,那么将明文m写成如下形式:
B e i j i n
g 2 0 0 8 O
l y m p i c
G a m e s *

‘*’号为填充,经过加密后结果为:
j e B i n i
0 2 g 0 O 8
p y l m c i
e a G m * s

获得密文c=“jeBini02g0O8pylmcieaGm*s”
解密时需要变换密钥,(1 4 3)的逆置换为(1 3 4),变换规则:对于每一个括号,第一个数字不变,后面反转。例:(1 2 3 4 5) -》 (1 5 4 3 2)。是不是很简单。那么上一个解密密钥=(1 3 4)(5 6),容易由密文再根据解密密钥获得明文。
写了代码试了下,仅供参考:

package Classical;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Permutation {
//  private static final int MAXCOL = 1024;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String c = String.valueOf(columnEncry("Beijing 2008 Olympic Games", "(1 4 3)(5 6)"));
        System.out.println("密文:"+c.replace(" ",""));
        String m = String.valueOf(columnEncry(c,"(1 3 4)(5 6)"));
        System.out.println("明文:"+m.replace(" ",""));
    }
    /*
     *@author 孤舟一叶
     *@param in表示要加密的数据,key表示密钥,形如(1 4 3)(5 6)
     *@return 返回密文
     */
    public static StringBuilder columnEncry(String in, String key){

        int colNum = 0;
        Map<Integer,Integer> relation = new HashMap<Integer,Integer>();
        String[] keySplited = key.split("[(]");
        for(int i = 1 ; i < keySplited.length ; i++){
            int len = keySplited[i].length()-<
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生参加科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,生不仅能够深入习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展生的科视野,使其对专业领域有更深刻的理解。在竞赛过程中,生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,科竞赛培养了生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使会有效地与他人合作、协调分工。在团队合作中,生们能够到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,科竞赛是提高生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,科竞赛可以为生提供展示自我、树立信心的机会。通过比赛的舞台,生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入习和未来的职业生涯。 最后,科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值