古典置换加密解密

本文介绍了古典置换加密的基本原理和操作步骤,通过实例展示了如何使用密钥对字符串进行加密和解密。加密过程中,将密文按密钥长度分组并重新排序,解密则是逆过程。具体实现思路涉及二维数组的排列与置换。
摘要由CSDN通过智能技术生成

将密文分组,分组组数= 密文长度/密钥长度,每组中的字符按照密钥中的序列排序。例如:
加密:
 message:thisiscipher
 secret key:312(密钥为数字,最大数字默认为密钥长度,密钥中各位数字不同)
 组数:12/3 = 4 => thi sis cip her
 根据密钥312,thi 变成ith
 其余组同理,得到密文ith ssi pci rhe
 去掉空格:ithssipcirhe
解密则反之

实现思路:
创建一个二维数组,密钥长度作为行数大小,message长度除密钥长度获得列数的大小。
得到一个原始排列顺序为123的二维数组,排列方式:
t h i
s i s
c i p
h e r

然后进行312顺序置换
i t h
s s i
p c i
r h e

循环输出后及实现效果:ithssipcirhe

package demo5;

import java.util.Scanner;

public class test2 {
   
    private final static String key = "312";
    private static String code1; //decrypt中加密文长度
    private static String l_message; //encrypt中的message传到解密中

    /**
     * 加密
     */
    private static void encrypt() {
   
        Scanner scanner = new Scanner(System.in);
        String message = scanner.nextLine();
        StringBuilder sb = new StringBuilder();
        int length = message.length();
        int length2 = test2.key.length();
        //确定几行
        int ret = length % length2;
        int rows;
        if (ret == 0) {
   
            rows = length / length2;
        } else {
   
            rows = (length / length2) + 1;
        }
        System.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值