You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用二维数组实现列序加密时如何正确格式化输出?

6x6矩阵置换加密代码修复

原代码问题

  • 缺少输入长度适配:输入字符不足36位时会触发数组索引越界,超过36位时也会报错
  • 输出逻辑不符合加密规则:没有按要求逐列遍历二维数组,直接输出char[,]类型无法得到正确密文

修复说明

  1. 先对输入做适配:超过36位截断前36位,不足36位末尾补空格占位
  2. 逐行填充6x6数组后,外层遍历列、内层遍历行读取字符,拼接得到密文

完整可运行代码

using System;
using System.Text;

class EncryptProgram
{
    static void Main()
    {
        char[,] encrypter = new char[6, 6];
        string message;
        int count = 0;

        Console.Write("请输入需要加密的消息:");
        message = Console.ReadLine();

        // 适配输入长度,满足6*6=36位要求
        if (message.Length > 36)
        {
            message = message.Substring(0, 36);
        }
        else
        {
            message = message.PadRight(36, ' ');
        }

        char[] messageToEncrypt = message.ToCharArray();

        // 逐行写入二维数组
        for (int r = 0; r < 6; r++)
        {
            for (int c = 0; c < 6; c++)
            {
                encrypter[r, c] = messageToEncrypt[count];
                count++;
            }
        }

        // 按列读取拼接加密结果
        StringBuilder encryptedSb = new StringBuilder();
        for (int c = 0; c < 6; c++)
        {
            for (int r = 0; r < 6; r++)
            {
                encryptedSb.Append(encrypter[r, c]);
            }
        }

        Console.WriteLine($"加密后结果:{encryptedSb.ToString().TrimEnd()}");
    }
}

内容的提问来源于stack exchange,提问作者Nobody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:15:04