小居71
2021-11-26 11:15
采纳率: 100%
浏览 16

怎样用matlab对输入的字符串加密呀?急

编写一段程序,对输入内容进行加密,若输入字符串中有除了数字字母以外的其他字符要求重新输入。加密方式如下:①对输入的字符串中字母进行大小写转换;②将数字进行循环加4运算(1→5,8→2等);③对所有的字母进行循环加3运算(a→d,Z→C等)。部分内容用函数实现,函数要求写上帮助文档,即在命令窗口可以使用help命令查看该函数的功能。

  • 好问题 提建议
  • 收藏

1条回答 默认 最新

  • 技术专家团-Joel 2021-11-26 11:58
    已采纳

    你好,代码如下(有帮助还望题主给个宝贵的采纳支持一下
    主程序

    clc;clear
    while true
        s = input('请输入需要加密的字符串:','s');
        if(~all(ismember(s, ['0':'9','a':'z','A':'Z'])))
            fprintf('字符串中含有除了数字字母以外的其他字符,请重新输入\n')
            continue;
        end
        s1 = en_code(s);
        break;
    end
    fprintf('加密后的字符串为:%s\n', s1)
    

    函数程序:

    function s1 = en_code(s)
    %% 该函数用于对字符串进行加密:
    % 输入字符串s,输出字符串s1
    % 加密规则
    % ①对输入的字符串中字母进行大小写转换;
    % ②将数字进行循环加4运算(1→5,8→2等);
    % ③对所有的字母进行循环加3运算(a→d,Z→C等)
    s1 = s;
    for i = 1:length(s)
        if(s(i)>='0' && s(i)<='9')
            p = mod(s(i)+4-'0', 10) + '0';
        elseif(s(i)>='a' && s(i)<='z')
            p = mod(s(i)+3-'a', 10) + 'a';
        elseif(s(i)>='A' && s(i)<='Z')
            p = mod(s(i)+3-'A', 10) + 'A';
        end
        s1(i) = char(p);
    end
    end
    

    一些运行示例
    示例1

    请输入需要加密的字符串:abcdefABCDEFZ1237890
    加密后的字符串为:defghiDEFGHII5671234
    

    示例2

    请输入需要加密的字符串:1234567;;;;ssss,,,kl
    字符串中含有除了数字字母以外的其他字符,请重新输入
    请输入需要加密的字符串:1234567890ABCDEFGXYZ
    加密后的字符串为:5678901234DEFGHIJGHI
    

    示例3

    >> help en_code
      该函数用于对字符串进行加密:
      输入字符串s,输出字符串s1
      加密规则
      ①对输入的字符串中字母进行大小写转换;
      ②将数字进行循环加4运算(15,82等);
      ③对所有的字母进行循环加3运算(a→d,Z→C等)
    
    
    已采纳该答案
    评论
    解决 1 无用
    打赏 举报