学习笔记-Matlab应用之图文破解

字符表示和转换

1.字符表示:用单引号表示:str='你好'

2.使用下标访问:str(1),str(end),str(end-1)

3.使用冒号获得序列:str(1:3)

4.字符串拼接:[str1 str2 str3

5.字符表示:msg=char('Hello','world')

6.字符矩阵大小:size(msg)

7.数字转字符:int2str(123),int2str(123.65)

8.数字转字符:num2str(pi,5),num2str(0.12313131,3)

9.字符转ASCII值:double('X')---88

10.ASCII转字符:char(97)---'a'

加密解密操作

>>or_msg='张xx是一名杀手';
asso=double(or_msg);
coded_msg=asso.^pi+1024;

solve=(coded_msg-1024).^(1/pi);

or_remsg=char(solve)


or_remsg =

    '张xx是一名杀手'
function [Coded_message,lower_limit,upper_limit] = encode_rand(original_message,coding_integer)
    % 该程序进行基础加密
    % 输入参数:original_message代表原文,coding_integer代表用来加密的随机数生成器种子
    %返回值:Coded_message表示加密的密文,lower_limit和upper_limit表示数值上下限

    % 字符转为数字
    associated_array 	= double(original_message);
    %进行pi次幂运算
    new_array        	= associated_array.^(pi);
    %求最小最大值
    min_new_array    	= min(min(new_array));
    max_new_array	= max(max(new_array));
    %计算上限下限和差值
    lower_limit      	= round(min_new_array);
    upper_limit      	= round(max_new_array);
    difference        	= upper_limit - lower_limit;
    %使用随机数生成器生成随机数
    rng(coding_integer)
    random_numbers	= lower_limit + difference*rand(size(original_message));
    %添加随机数
    converted_array  	= new_array + random_numbers;
    %获得加密密文
    Coded_message  	= converted_array';
end
function message=decode_rand(coded_msg,coding_num,lower_limit,upper_limit)
    % 该程序进行解密操作
    % 输入参数:coded_msg表示已加密的密文,coding_num表示随机数生成器使用的种子,lower_limit和upper_limit表示数值上下限
    %返回值是解密的密文

    converted_array=coded_msg';
    difference = upper_limit - lower_limit;
    rng(coding_num);
    rand_num = lower_limit + difference*rand(size(coded_msg'));
    new_array=converted_array-rand_num;
    
    associated_array=new_array.^(1/pi);
    associated_array=round(associated_array);
    message=char(associated_array);
end

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南叔先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值