热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Matlab信息加密解密系统

Matlab信息加密解密系统一、Matlab简介Matlab是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。

Matlab信息加密解密系统


一、Matlab简介

Matlab是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国MathWorks公司出品的商业数学软件,它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,可以进行矩阵运算、图形处理、实现算法、创建用户界面、连接其他编程语言的程序等,有多样化的各种工具箱可供应用。主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。Matlab与其他高级语言有良好的接口,如C、C++、Java等。

二、Matlab在信息加密技术方面的应用

随着计算机网络的发展,计算机应用更加广泛与深入,同时也使得计算机的安全问题日益突出和复杂。网络安全面临诸多威胁,如计算机病毒、黑客入侵、机密文件泄露等等。然而如何确保数据的可靠性、真实性、保密性,这个问题越来越受到人们的关注。密码技术作为保护信息安全的主要手段之一,使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整性和确证性,防止信息被篡改、伪造和假冒。同时,密码技术是其他安全技术的基础,比如数字签名和密钥管理。随着科学技术的进步,信息加密出现了数字水印、指纹识别、人面识别等技术。Matlab软件强大的科学运算、图形处理和仿真等功能在信息加密技术方面有着广泛的应用。

1.Matlab在密码技术的应用

保密通讯无论在军事、政治、经济还是日常生活中都起着非常重要的作用。信息加密和解密的作用,就是为了将信息传递给己方的接受者,同时又要防止他人(特别是敌人)知道信息的内容,必须将要传递的信息(明文)加密,变成密文后发送出去,这样,即使敌方得到密文也看不懂,而己方的接受者收到密文后却可以按照预先定好的方法加以解密。从密码学的发展来看,密码可分为古典密码(即以字符为基本加密单元的密码),以及现代密码(即以信息块为基本加密单元的密码)。古典密码学在计算机出现以前已得到广泛应用,主要是指20世纪40年代之前的密码编码和密码分析技术,加密解密过程基本是用机械和电子方法实现的,而不是通过软件实现的,工作速度很慢,设备非常笨重。根据算法的不同,古典密码主要有棋盘密码、凯撒密码、维吉尼亚密码、普莱费尔密码、HILL密码等。

矩阵是一种方便的计算工具,它在密码学中得到广泛的应用。HILL2密码是矩阵在密码学的一个有趣应用,HILL2密码是基于矩阵的运算和可逆矩阵,明文被分成大小相同的几个组,密钥是一个可逆方阵。我们可通过Matlab对HILL2密码的加密和解密算法运算实例,了解Matlab软件的使用。在编程过程中使用Matlab的矩阵运算函数:mod(求余)、reshape(将矩阵元素按列方向进行重组)等。

(1)明文加密:

一般的加密过程是这样的:

明文——加密器——密文——普通信道——解密器 ——明文。

根据HILL2密码算法的原理,我们设模 26 意义下,密钥(加密)为矩阵A = ,密钥(解密)为矩阵A = 时,基于Matlab的加密程序操作如图所示:


v2-d0d699809ad3613d9236eb81fa77e3e7_b.jpg


Figure 1加密过程代码

在Matlab运行时,当输入明文为:杨斯楠(YANGSINAN)时(明文最后N是因为字符串的长度不是偶数时的处理方法),得到的密文是:ACBUKAPCPP。

运行过程如图所示:


v2-b82f5f0bed5828417c55c0705a4929e1_b.jpg


Figure 2加密运行过程

(2)密文解密

解密就是加密的逆过程。基于Matlab的解密程序操作如图所示:


v2-af00f807819169de2f71786f2caf3097_b.jpg


Figure 3解密过程代码

在Matlab运行时,当输入密文为:ACBUKAPCPP时,得到的明文是: YANGSINANN。

运行过程如图所示:


v2-80baea2cef138fac1c4a8a5efabf6f9a_b.jpg


Figure 4解密运行过程

2.Matlab在指纹识别系统的应用

在一个安保系统或涉密信息系统中,当需要对进入者进行身份信息鉴别时,比使用密码更安全有效的是使用生物特征识别系统,如指纹识别系统等。指纹识别技术的优势在于,不同人的指纹,即使同一个人不同手指的指纹,纹线走向及纹线的断点和交叉点等各不相同,也就是说,每个指纹都是唯一的。另外,指纹不随年龄的增长而发生变化,是终生不变的。依靠这种唯一性和稳定性,可以把一个人同他的指纹对应起来,通过对他的指纹和预先保存的指纹进行比较,就能验证他的真实身份。

指纹自动识别系统AFIS(Automated Fingerprint Identification System)是一种通过计算机实现的身份识别手段。该系统主要包括几个流程:指纹取像,图像预处理,特征提取(数据库管理),指纹识别。①指纹取像,即指将一个人的指纹采集下来输入计算机,指纹图像的获取主要利用设备取像,方便实用。②图像的预处理和特征提取,无论采取哪种方法提取指纹,总会给指纹图像带来各种噪声,图像预处理的目的就是去除图像中的噪音,把它变成一幅清晰的点线图,以便于提取正确的指纹特征。预处理过程,就是将原始指纹图像经过离散化和归一化等过程,得到待识别的指纹图像数据。③指纹识别,即直接把预处理后的指纹图像数据进行识别匹配,一般只需计算两幅图像数据的相关性,得到相关系数,设定某一阈值来决定是否匹配。

指纹图像的预处理和指纹识别可以通过Matlab来进行处理和运算。实现指纹图像的识别,常用的算法有:基于神经网络指纹识别算法、滤波特征和不变矩指纹识别算法和指纹匹配算法。Matlab环境下实现的指纹自动识别系统,具有简单灵活,易于改进等优点。

3.Matlab在涉密信息系统中应用

虽然Matlab有强大的矩阵运算及图形显示能力,但由于其是一种解释性语言,执行效率比较低,不适用于通用的编程平台。而其他的面向对象的程序语言,如JAVA、C++等,则被广泛应用于开发各种应用软件,但是,它们对于某些较复杂的数学运算的编程比较烦琐,处理速度也较慢。因此,我们可以在这些语言的编程环境下,调用Matlab来处理一些比较复杂的数学运算(如加密算法),充分发挥Matlab强大的数学运算能力和仿真功能,实现混合编程,弥补单独编程的缺点,提高其编程效率和加快处理速度。现在Matlab的Matlab Engine函数具有提供面向C、C++和JAVA等语言的接口函数,用户可以通过在其编程环境中调用接口函数,实现对Matlab的控制。

涉密信息系统用来处理和传输国家秘密信息,如果安全保密防范不力,就会危及国家的安全和利益。因此,安全防护技术是涉密信息系统安全管理的主要问题。加密保护是保障信息安全的重要手段之一,通常的加密技术是用复杂的数学算法来改变原始信息,这种技术虽然安全性较高,但还是存在被破译的可能性。而量子密码是一种截然不同的加密方法,主要利用量子状态作为信息加密和解密的密钥。任何想测算和破译密钥的人都会因为改变量子状态而得到无意义的信息。从理论上来说,用量子密码加密的信息不可能被窃听,安全程度极高。对于涉密信息系统,为确保信息的安全,应采用量子密码来加密。在RR量子密钥分配协议中,通信双方执行样条纠错算法(Slice算法)将连续变量的密钥转换成离散的二进制密钥,而这个Slice算法是用Matlab语言编写的。因此,在涉密信息系统的编程环境中,采用混合编程,通过Matlab的接口函数,调用由Matlab编写的Slice算法,实现量子密码加密。

三、结束语

信息加密技术在我们的生活中起着越来越重要的作用,为信息安全提供了可靠的保障。Matlab集数值计算、矩阵运算、信号处理和图形显示于一体。由于其强大的科学计算、数字图像处理能力以及丰富的库函数和各种各样的工具箱,在信息安全保密方面有着广泛的应用前景。我虽然刚刚接触Matlab,已深深地被它所吸引,我将要认真学习,掌握这个工具,并在今后的专业学习和实践中予以运用。



推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
author-avatar
孤火自燃
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有