合肥工业大学信息隐藏实验报告 完整代码版.

合集下载

合肥工业大学汇编程序设计实验报告完整代码

合肥工业大学汇编程序设计实验报告完整代码

合肥工业大学汇编程序设计实验报告完整代码合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:信息安全13-1学号:2013211869姓名:马骏实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H 和DS:0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三.实验过程和程序实验将”12345678H”和”FEDCBA98H”分别送入起始地址为DS:200H和DS:204H 的两个单元中。

还包含两个附加题,一是从DS:0000H 开始的5个16 位带符号数分别记为x,y,z,v,w,E命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x,二是统计bx中1的个数四.实验结果(包括必要的截图)将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H 和DS:0204H两个单元中。

直接寻址方式实现数据相加寄存器间接寻址实现数据相加附加题一:从DS:0000H开始的 5 个16 位带符号数分别记为x,y,z,v,w,用E 命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x 附加题二:完成BX中1 的个数的统计。

五.实验体会通过本次实验,了解了使用debug的各种指令。

隐藏技术实验报告

隐藏技术实验报告

一、实验背景随着科技的不断发展,信息传播速度的加快,信息安全问题日益突出。

为了保护国家、企业和个人隐私,防止信息泄露,隐藏技术应运而生。

隐藏技术主要包括信息隐藏、数字水印和隐写术等。

本实验旨在研究隐藏技术的原理和实现方法,并对其性能进行评估。

二、实验目的1. 理解隐藏技术的原理和实现方法;2. 掌握信息隐藏、数字水印和隐写术的基本操作;3. 评估隐藏技术的性能,包括鲁棒性、抗攻击能力和隐蔽性;4. 分析隐藏技术在信息安全领域的应用前景。

三、实验内容1. 信息隐藏(1)实验原理:信息隐藏技术是将信息嵌入到载体数据中,使得嵌入的信息对人类感知不可见,同时保证载体数据的完整性。

常用的信息隐藏方法有基于空域、频域和变换域的隐藏方法。

(2)实验步骤:1)选择载体数据,如图像、音频和视频等;2)将秘密信息嵌入到载体数据中,采用空域、频域或变换域方法;3)提取嵌入的秘密信息,验证隐藏效果;4)分析隐藏技术的性能,包括鲁棒性和抗攻击能力。

2. 数字水印(1)实验原理:数字水印技术是在数字媒体中嵌入不可见的水印,用于标识数字媒体的版权信息、完整性校验和来源追踪。

常见的数字水印技术有基于空间域、频域和变换域的水印嵌入方法。

(2)实验步骤:1)选择数字媒体,如图像、音频和视频等;2)将水印信息嵌入到数字媒体中,采用空间域、频域或变换域方法;3)提取水印信息,验证水印嵌入效果;4)分析水印技术的性能,包括鲁棒性、抗攻击能力和隐蔽性。

3. 隐写术(1)实验原理:隐写术是一种将秘密信息隐藏在公开信息中的技术,使得秘密信息对人类感知不可见。

常见的隐写术有基于文本、图像和音频的隐写方法。

(2)实验步骤:1)选择公开信息,如文本、图像和音频等;2)将秘密信息嵌入到公开信息中,采用隐写方法;3)提取嵌入的秘密信息,验证隐写效果;4)分析隐写技术的性能,包括隐蔽性、抗攻击能力和检测难度。

四、实验结果与分析1. 信息隐藏实验结果:通过实验,我们发现基于变换域的信息隐藏方法在鲁棒性和抗攻击能力方面表现较好,而基于空域的隐藏方法在隐蔽性方面表现较好。

合肥工业大学报考点(3459)考生学籍学历校验存疑信息提示

合肥工业大学报考点(3459)考生学籍学历校验存疑信息提示

陈*
3425**********3011
345995471 刘*泽
3401**********3536
345995504 赵*薇
3422**********0020
345995531
倪*
3401**********3529
345995698 夏*冰
3426**********4316
345995720 李*军
345995400
李*
3402**********051X
345995412 方*祥
3426**********4638
345995413
赵*
3426**********0139
345995425
孙*
4290**********3320
345995433 李*杰
3403**********0810
345995470
3429**********0080
345999219 张*悠
3422**********6095
345999517 易*军
3426**********0819
姓名、学历证书编号查无学历。 校验未通过,毕业年月有疑问。 校验通过。有研究生学籍。 姓名、学历证书编号查无学历。 姓名、学历证书编号查无学历。 校验未通过,学习形式有疑问。 校验未通过,学习形式有疑问。 校验未通过,毕业学校有疑问。 姓名、学历证书编号查无学历。 校验未通过,毕业年月有疑问。 姓名、学历证书编号查无学历。 姓名、学历证书编号查无学历。 姓名、学历证书编号查无学历。 校验未通过,毕业学校有疑问。 校验通过。有研究生学籍。 校验未通过,毕业学校有疑问。 校验未通过,学历码有疑问。 校验未通过,毕业年月有疑问。 校验未通过,毕业年月、毕业学校有疑问。 校验未通过,学历码有疑问。 校验未通过,学习形式有疑问。 姓名、学历证书编号查无学历。 姓名、身份证号查无学籍。 校验未通过,学习形式有疑问。 校验未通过,毕业学校有疑问。 姓名、学历证书编号查无学历。 姓名、学历证书编号查无学历。 校验未通过,学习形式有疑问。 校验未通过,毕业年月有疑问。 校验未通过,学历码有疑问。 校验未通过,毕业学校有疑问。 姓名、身份证号查无学籍。 校验通过。有研究生学籍。 姓名、学历证书编号查无学历。 校验未通过,毕业年月有疑问。 校验未通过,毕业学校有疑问。 校验未通过,毕业年月有疑问。 校验未通过,毕业学校有疑问。

合肥工业大学计算机组成原理实验报告(DOC)

合肥工业大学计算机组成原理实验报告(DOC)

实验一基本运算器实验一、实验目的了解运算器的组成结构;掌握运算器的工作原理。

二、实验内容1、连线说明:如果EXEC键上方指示灯不亮,请按一次EXEC键,点亮指示灯,表示实验仪在运行状态。

3、给暂存器A赋初值(1)拨动开关区单元的K7..K0开关,形成二进制数01011000(或其它值);指示灯亮,表示该位是‘1’,灭为‘0’。

(2)拨动开关区单元K15(wA)、K14(wB)、K13(rALU)、K12(CN_I)开关,赋wA=0(允许写A)、wB=1(禁止写B)、rALU=1(不允许ALU输出)、CN_I=0,按CON单元的STEP按键一次,产生一个T1的下降沿,将二进制数01011000写入暂存器A中,ALU单元的A_7…A_0LED 上显示A中的值4、给暂存器B赋初值(1)拨动开关区单元的K7..K0开关,形成二进制数10101011(或其它值)。

(2)赋wA=1(禁止写A)、wB=0(允许写B)、rALU=1(不允许ALU输出)、CN_I=0,按CON单元的STEP按键一次,产生一个T2的下降沿,将二进制数10101011写入暂存器B 中,ALU单元的R_7…R_0LED上显示B中的值5T3节拍,当rALU(K13)=0,如果S3S2S1S0的值是0000时,T2、T3节拍时,允许ALU结果输出;S3S2S1S0的值是其它数值,T3节拍时,允许ALU结果输出,显示于扩展区的二位数码管、DS94..DS101的LED上。

6、根据后边的“运算结果表”,改变K20(S0)、K21(S1)、K22(S2)、K23(S3)、K12(CN_I)的值,观察并记录运算器的输出。

例如:S0=0,S1=0,S2=0,S3=0,ALU的D7_D0 = 58H;FC、FZ、FS、I不变。

注意:只有按CON单元的STEP按键一次,产生一个T3的下降沿,ALU才将标志位FC、FZ、FS、I写入标志寄存器PSW中,才能在ALU单元的FZ、FC、FS、I指示灯上看到结果。

合肥工业大学数据结构实验二

合肥工业大学数据结构实验二

计算机与信息学院
数据结构实验报告
专业班级
计算机科学与技术14-1班
学生姓名及学号
李亚鸣-2014211590
课程教学班号
0001
任课教师
胡学钢/张玉红
实验指导教师
实验地点
2014 ~2015 学年第 2 学期
说明
实验报告是关于实验教学内容、过程及效果的记录和总结,因此,应注意以下事项和要求:
1.每个实验单元在4页的篇幅内完成一份报告。

“实验单元”指按照实验指导书规定的实验内容。

若篇幅不够,可另附纸。

2、各实验的预习部分的内容是进入实验室做实验的必要条件,请按要求做好预习。

3.实验报告要求:书写工整规范,语言表达清楚,数据和程序真实。

理论联系实际,认真分析实验中出现的问题与现象,总结经验。

4.参加实验的每位同学应独立完成实验报告的撰写,其中程序或相关的设计图纸也可以采用打印等方式粘贴到报告中。

严禁抄袭或拷贝,否则,一经查实,按作弊论取,并取消理论课考试资格。

5.实验报告作为评定实验成绩的依据。

实验序号及名称:实验一单链表实验
实验时间∶2014年6 月6 日。

合工大工程项目实训报告

合工大工程项目实训报告

工程项目实训报告(2015届)学院名称计算机与信息学院专业(班级)信息安全11-1 姓名(学号)王佳淼20112914指导教师实训地点起止时间程克勤2014.12-2015.1院系意见领导签名(单位签章):年月日附页:工业大学计算机与信息学院课程设计报告课程:创新工程实训专业班级:信息安全11-1学号: 20112914姓名:王佳淼2014年12月摘要信息技术的普及给生活带来方便的同时也带来了漏洞产生的可能信息安全漏洞是信息系统在设计实现配置运行过程中有意无意产生的缺陷恶意主体利用这些缺陷会对信息系统的安全造成损害影响信息系统及信息的安全属性当前大量的网络失泄密案件和信息安全问题均与漏洞的存在。

计算机联网技术的发展改变了以单机为主的计算模式。

但是,网络入侵的风险性和机会也相应地急剧增多,设计安全措施来防未经授权访问系统的资源和数据?是当前网络安全领域的一个十分重要而迫切的问题,目前,要想完全避免安全事件的发生并不太现实>网络安全人员所能做到的只能是尽力发现和察觉入侵及入侵企图,以便采取有效的措施来堵塞漏洞和修复系统,这样的研究称为入侵检测。

为此目的所研制的系统就称为入侵检测系统,本实验将论述网络安全存在的漏洞和潜在的威胁。

一个安全系统至少应该满足用户系统的性U完整性及可用性要求。

但是,随着网络连接的迅速扩展,特别是互联网大围的开放以及金融领域网络的接入。

越来越多的系统遭到入侵攻击的威胁。

这些威胁大多是通过挖掘操作系统和应用服务程序的弱点或者缺陷来实现的。

1988年的蠕虫事件就是一个很好的实例。

一、实验目的............................................................ - 1 -1. 引言.............................................................. - 1 -2. 研究现状.......................................................... - 1 -二、实验方法............................................................ - 1 -1. 方法介绍.......................................................... - 1 -2.方法原理........................................................... - 2 -三、实验结果及分析...................................................... - 2 -1.结果图表..................................................... - 3 - 2.结果分析..................................................... - 4 -1.结果图表....................................................... - 5 -2.结果分析....................................................... - 5 -1.结果图表....................................................... - 5 -2.结果分析....................................................... - 6 -1.结果图表....................................................... - 6 -2.结果分析....................................................... - 9 -1.结果图表...................................................... - 10 -2.结果分析...................................................... - 12 -1.结果图表...................................................... - 12 -2.结果分析...................................................... - 13 -1.结果图表...................................................... - 13 -2.结果分析...................................................... - 15 -四、实验感想........................................................... - 15 -五、附录:java源代码.................................................. - 16 -1. 从excel中导入................................................... - 16 -2. 数据结构模型初始化............................................... - 17 -3. 余弦相似度计算................................................... - 19 -4.统计模块.......................................................... - 20 -1.类别统计...................................................... - 20 -2. 时间计算..................................................... - 22 -3. ip统计及ip归属地查询....................................... - 22 -4. 危险程度统计................................................. - 27 -5. 端口统计..................................................... - 28 -实验目的引言通现在网络攻击手段不断变化,导致网络入侵检测与防御机制需不断更新。

信息隐藏 隐写性能评价

信息隐藏 隐写性能评价
信息隐藏技术
合肥工业大学计算机与信息学院 郑淑丽
信息隐藏
一个模型:囚徒模型
两种应用:隐写 && 三个指标
安全性 隐藏容量 鲁棒性
2
数字水印
图像载体的选择
图像库
例如:USC-SIPI图像库 /database/
USC-SIPI
要求
提交实验报告电子版,附关键代码、实验结果截图 时间:2013.10.30
Hale Waihona Puke 实验一:连续LSB嵌入检测实验
图像格式:BMP,256*256,8bit
22
实验二:随机间隔LSB嵌入检测实验
23
实验三:JPEG图像DCT系数隐写检测实验
图像格式:JPEG,600*400,8bit,采用Jsteg对 DCT系数隐写,连续嵌入
24
卡方分析
同样适用调色板LSB隐写的检测(EzStego)
RS分析
参考
1. Detection of LSB Steganography 2. RS 检测算法的分析与改进
隐写分析—统计检测
利用载体数据的统计特性判断是否含有秘密信息
针对LSB的隐写分析
F5隐写分析
F5隐写分析
参考
《数字图像隐写分析》——刘粉林,机械工业出版社 Steganalysis of JPEG Images: breaking the F5 Algorithm
29
RS分析步骤
3. 对每个图像块应用非负翻转(F1, F0)
RM=空间相关性增加的图像块个数/图像块总个数 SM=空间相关性减小的图像块个数/图像块总个数
RS分析步骤
4. 对每个图像块应用非正翻转(F-1,F0)

合肥工业大学考试科目代码表

合肥工业大学考试科目代码表

合肥工业大学考试科目代码表统考政治101 基础英语713 第四纪地质学410 “信号与系统”和“数字信息处理”432 素描人物写生502单考政治111 中外美术史及理论714 生物化学(二)411 半导体物理及器件物理433 色彩人生写生503MBA联考综合能力199 艺术设计史及理论715 理论力学412 “电动力学”和“信号与系统”434 城市规划设计与表现504 数学分析716 材料力学413 自动控制原理435 建筑设计与表现(一)505 统考英语201 单考数学717 机械原理414 电子技术(包括模电、数电)436 建筑设计与表现(二)506 统考俄语202 有机化学(一)718 汽车理论415 “数据结构”和“微机原理”437 建筑构造设计507统考日语203 地球科学基础719 生产计划与控制416 建筑构造438单考英语211 细胞生物学720 过程装备设计基础417 结构力学439二外德语212 遗传学721 造型设计基础418 水力学440二外法语213 建筑历史与理论722 工程光学419 工程热力学(二)441二外日语214 城市规划原理723 误差理论与数据处理420 测绘科学基础442二外俄语215 建筑物理724 传感器421 物理化学443MBA联考英语299 光学(包含应用光学和物理光学)422 生物化学(一)444自然辩证法原理401 固体物理学423 工程地质学445数学一301 经济学原理402 无机材料科学基础424 交通工程学446数学二302 科学社会主义403 金属学原理425 环境科学概论447数学三303 思想政治教育原理及方法论404材料成型原理426 有机化学(二)448数学四304 英语专业综合考试(一)405 工程热力学(一)427 微生物学449英语专业综合考试(二)406 真空技术428 运筹与管理450教育学专业基础综合311 高等代数407 电路429 企业管理451哲学711 高分子化学408 电力系统分析430心理学712 岩浆岩石学409 电力电子技术431 艺术设计与表现501。

合肥工业大学信息隐藏实验报告 完整代码版

合肥工业大学信息隐藏实验报告 完整代码版

计算机与信息学院信息隐藏实验报告专业班级信息安全13-1班学生姓名及学号马骏 2013211869 课程教学班号任课教师郑淑丽实验指导教师郑淑丽实验地点20 ~20 学年第学期实验1 BMP位图信息隐藏一、实验目的学习BMP格式文件,并编程实现对位图文件信息隐藏二、实验要求将TXT文件嵌入BMP 文件中三、问题描述1、BMP位图文件的格式?2、有哪几种方法隐藏信息,分别采用什么样的数据结构3、随机选取如何避免“碰撞”的出现四、算法思想1、BMP位图文件格式0000h~0001h 2字节-------------------------bm的ASC码0002h~0005h 4字节-------------------------文件大小102718字节0006h~0009h 4字节-------------------------全为0000Ah~000Dh 4字节-------------------------偏移量118字节000Eh~0011h 4字节-------------------------位图信息块大小40字节0012h~0015h 4字节-------------------------宽4500016h~0019h 4字节-------------------------高450001Ah~001Bh 2字节-------------------------恒为01h 00h001Ch~001Dh 2字节-------------------------颜色所占二进制位数值04h 00h=4 16色位图001Eh~0021h 4字节-------------------------压缩方式=0无压缩0022h~0025h 4字节-------------------------图像数据区大小102600字节0026h~0029h 4字节-------------------------水平每米多少像素39个002Ah~002Dh 4字节-------------------------垂直每米多少像素39个002Eh~0031h 4字节-------------------------图像所用颜色数=00032h~0035h 4字节-------------------------重要颜色数=00036h~0076h 64字节-------------------------颜色表0077h~1913Dh 102600字节-------------------------图像数据区2、(1)、在图片图像数据区的一个连续的数据区采用整字节替换的方法(2)、在图像数据的最后增加文本信息的字节(3)、顺序选取每个文本信息字节的每一位替换图像数据区的一个连续的数据区每个字节的最后一位。

合工大实验报告

合工大实验报告

合工大实验报告合工大实验报告一、引言合工大是中国著名的高等学府,以其优秀的教学质量和丰富的实验资源而闻名。

本次实验报告将对合工大进行一次全面的实验评估,探讨其实验室设备、实验教学和实验成果等方面的情况。

二、实验室设备合工大拥有先进的实验室设备,涵盖了多个学科领域。

在物理实验室中,我们发现了各种仪器设备,如光电子实验台、电磁实验装置等,这些设备不仅数量众多,而且质量也非常可靠。

化学实验室中的试剂和仪器也十分齐全,能够满足学生的实验需求。

总体来说,合工大的实验室设备水平较高,为学生提供了良好的实验条件。

三、实验教学合工大注重实验教学的质量和效果。

在实验课程中,教师们会详细讲解实验的原理和操作步骤,并提供相关的实验指导书。

实验过程中,教师们会耐心地指导学生,解答他们的问题,并及时纠正他们的错误。

此外,合工大还鼓励学生积极参与实验设计和实验报告撰写,培养他们的实验能力和科研素养。

四、实验成果合工大的实验成果丰硕。

在物理实验中,学生们通过实验掌握了光电效应、电磁感应等基本原理,提高了实验操作和数据处理的能力。

在化学实验中,学生们通过合成反应和分析实验,深入了解了化学反应的机理和方法。

此外,合工大还鼓励学生参与科研项目,培养他们的创新能力和科学精神。

许多学生在实验中获得了突破性的成果,为学校赢得了声誉。

五、实验改进虽然合工大的实验教学取得了显著的成绩,但仍存在一些问题需要改进。

首先,实验课程的安排较为紧凑,学生们在有限的时间内完成实验和报告任务较为困难。

其次,实验指导书的内容有时过于简单,无法满足学生的深入学习需求。

最后,实验设备的维护和更新需要加强,以保证实验教学的顺利进行。

六、结论综上所述,合工大的实验室设备齐全,实验教学质量高,实验成果丰硕。

然而,仍需要进一步改进实验课程的安排、实验指导书的内容和实验设备的维护等方面。

相信在学校的努力下,合工大的实验教学将进一步提高,为学生的科学研究和实践能力的培养提供更好的支持。

合工大考 试 科 目 代 码 表

合工大考 试 科 目 代 码 表

考试科目代码表思想政治理论101 心理学712 岩石学809 水力学831单独考试政治理论111 基础英语713 细胞生物学810 工程热力学(二)832艺术原理与基础理论(一)714 材料力学811 测绘科学基础833英语一201 艺术原理与基础理论(二)715 机械原理812 物理化学834俄语202 数学分析716 汽车理论813 生物化学(一)835日语203 单独考试数学717 工业工程综合814 工程地质学836英语二204 有机化学(一)718 过程装备设计基础815 交通工程学837单独考试英语240 地质学基础719 造型设计基础816 道路勘测设计838二外德语241 生物化学(二)720 普通物理817 环境科学概论839二外法语242 设计基础理论(一)721 误差理论与数据处理818 有机化学(二)840二外日语243 设计基础理论(二)722 传感器819 运筹与管理841二外俄语244 设计基础理论(三)723 应用光学820 企业管理学842材料科学基础(一)821数学一301 计算机学科专业基础综合408 材料科学基础(二)822 艺术设计与创作表现(一)(6小时)501数学二302 自然辩证法原理801 材料成形基本原理823 艺术设计与创作表现(二)(6小时)502数学三303 经济学原理802 工程热力学(一)824 设计与表现(一)(6小时)503 科学社会主义803 真空工程技术825 设计与表现(二)(6小时)504 教育学专业基础综合311 思想政治教育原理及方法论804电路826 设计与表现(三)(6小时)505 建筑学基础355 英语专业综合考试(一)805 半导体物理和数字电路827管理类联考综合能力399 英语专业综合考试(二)806 “信号与系统”和“数字信号处理”828高等代数807 自动控制原理829哲学711 高分子化学808 结构力学830。

面向信息安全专业的信息隐藏技术课程混合式教学研究与实践

面向信息安全专业的信息隐藏技术课程混合式教学研究与实践

第 22卷第 6期2023年 6月Vol.22 No.6Jun.2023软件导刊Software Guide面向信息安全专业的信息隐藏技术课程混合式教学研究与实践郑淑丽1,罗珣1,胡东辉1,2(1.合肥工业大学计算机与信息、人工智能学院,安徽合肥 230601;2.合肥工业大学信息化建设与发展中心,安徽合肥 230009)摘要:针对传统教学存在的痛点问题,研究线上线下混合教学模式,将SPOC+翻转课堂应用于面向信息安全专业本科生开设的信息隐藏技术课程教学中,结合面向专业的特殊性及课程本身特点,探讨课程整体建设思路、教学方法与教学评价设计,并在教学活动中实施。

实践表明,该混合教学模式能有效拓展学习资源、促进课堂互动,进一步提高教学质量。

关键词:混合式教学;MOOC;SPOC;翻转课堂;信息隐藏DOI:10.11907/rjdk.221858开放科学(资源服务)标识码(OSID):中图分类号:G434 文献标识码:A文章编号:1672-7800(2023)006-0110-04Research and Practice on Blended Teaching for Information HidingTechnology Course in the Education of Information Security MajorZHENG Shu-li1, LUO Xun1, HU Dong-hui1,2(1.School of Computer Science and Information Engineering, Heifei University of Technology, Hefei 230601, China;2.School of Computer and Information and Artificial Intelligence, Heifei University of Technology, Hefei 230009, China)Abstract:Aiming at the pain points existing in traditional teaching, study the online and offline hybrid teaching mode, which applies SPOC+ flipped classroom to the teaching of information hiding technology courses for undergraduate students majoring in information security. Combin‐ing the specialty specificity and the characteristics of the course itself, discuss the overall construction ideas, teaching methods, and teaching evaluation design of the course, and implements them in teaching activities. Practice has shown that the proposed mixed teaching model can ef‐fectively expand learning resources, promote classroom interaction, and further improve teaching quality.Key Words:blended teaching; MOOC; SPOC; flipped classroom; information hiding0 引言信息隐藏技术是面向信息安全专业本科生开设的专业课程,主要研究如何将信息隐藏到各种载体中进行传输,实现隐蔽通信。

合肥工业大学计算机专业计算方法实验报告

合肥工业大学计算机专业计算方法实验报告

合肥⼯业⼤学计算机专业计算⽅法实验报告合肥⼯业⼤学计算机与信息学院实验报告课程:计算⽅法专业班级:学号:姓名:Java界⾯其实都不难按照程序流程图就可以完成了实验⼀插值与拟合⼀、实验⽬的(1) 明确插值多项式和分段插值多项式各⾃的优缺点;(2) 编程实现三次样条插值算法,分析实验结果体会⾼次插值产⽣的龙格现象;(3) 理解最⼩⼆乘拟合,并编程实现线性拟合,掌握⾮线性拟合转化为线性拟合的⽅法 (4) 运⽤常⽤的插值和拟合⽅法解决实际问题。

数据如下:j x 165 123 150 123 141 j y187126172125148三、基本原理(计算公式)(1)三次样条插值在每个内节点上具有2阶导数。

(2)最⼩⼆乘法拟合直线为y=a+bx ,⽽a ,b 有如下等式(N 为给出的数据点的总个数)i i y x b N =+∑a ; ∑∑∑=+i i i i y x x b x 2a四、算法设计与实现(流程图,关键点)最⼩⼆乘法直线拟合:输⼊数据后,按照公式计算a,b。

⽤得到的拟合直线计算预测点的近似函数值。

五、输⼊与输出(1)三次样条插值输⼊:区间长度,n+1个数据点,预测点输出:预测点的近似函数值,精确值,及误差(2)最⼩⼆乘法直线拟合六、结果讨论和分析代码三次样条插值#include#include#define N 10using namespace std; double u0(double x){ return (x-1)*(x-1)*(2*x+1);return x*x*(3-2*x);}double v0(double x){return x*(x-1)*(x-1);}double v1(double x){return x*x*(x-1);}double s3(double x,double y,double y1,double m,double m1,double h){ return u0(x)*y+u1(x)*y1+h*v0(x)*m+h*v1(x)*m1; }double f(double x){return 1/(1+x*x);}int main(){ifstream fin;fin.open("E:\\t.txt");if(!fin){cout<<"error opening input stream"<system("pause");return 0;}double x[N+1],y[N+1],m[N+1],A[N],B[N],C[N];double h[N];double a[N],b[N];double f0,fn;double temp;int i;for(i=0;i<=N;i++){fin>>x[i]>>y[i];}fin>>f0>>fn;h[0]=x[1]-x[0];for(i=1;ib[i]=3*((1-a[i])*(y[i]-y[i-1])/h[i-1]+a[i]*(y[i+1]-y[i])/h[i]);}m[1]=b[1]-(1-a[1])*f0;m[N-1]=b[N-1]-a[N-1]*fn;for(i=2;im[i]=b[i];}for(i=1;iB[i]=2;C[i]=a[i];}for(i=2;iA[i]=1-a[i];}C[1]=C[1]/B[1];m[1]=m[1]/B[1];double t;for(i=2;i!=N-2;i++){t=B[i]-C[i-1]*A[i];C[i]=C[i]/t;m[i]=(m[i]-m[i-1]*A[i])/t;}m[N-1]=(m[N-1]-m[N-2]*A[N-1])/(B[N-1]-C[N-2]*A[N-1]); for(i=N-2;i>0;i--){m[i]=m[i]-C[i]*m[i+1];}cout<<"please:(输⼊插值节点在"<while(cin>>temp){double tt=temp;if(tempx[N]){cout<<"插值节点为"<continue;}}temp=(temp-x[i-1])/h[i-1];temp=s3(temp,y[i-1],y[i],m[i-1],m[i],h[i-1]); cout<<"插值节点为"<}system("pause");fin.close();return 0;}最⼩⼆乘法的直线拟合#include#include#define n 5using namespace std;double sum(double x[],int k){int i;double sum=0;for(i=0;isum=sum+x[i];return sum;}double sum2(double x[],int k){int i;double sum=0;for(i=0;isum=sum+x[i]*x[i];return sum;}double sumxy(double x[],double y[],int k){ int i;double sum=0;for(i=0;isum=sum+x[i]*y[i];int main(){ifstream fin;fin.open("E:\\t.txt");if(!fin){cout<<"error opening input stream"<system("pause");return 0;}double x[n],y[n],a,b;double x0,y0;int i;for(i=0;ifin>>x[i]>>y[i];}b=(n*sumxy(x,y,n)-sum(x,n)*sum(y,n))/(n*sum2(x,n)-sum(x,n)*sum(x,n));a=(sum(y,n)-b*sum(x,n))/n;cout<<"最⼩⼆乘法直线拟合得到a: "<cout<<"请输⼊插值节点x:";while(cin>>x0){y0=a+b*x0;cout<<"当x="<cout<<"请输⼊插值节点x:";}system("pause");fin.close();return 0;}实验⼆数值积分⼀、实验⽬的(1)熟悉复化梯形⽅法、复化Simpson⽅法、梯形递推算法、龙贝格算法;(2)能编程实现龙贝格算法和中点加速;(3)理解并掌握⾃适应算法和收敛加速算法的基本思想;(4)分析实验结果体会各种⽅法的精确度,建⽴计算机求解定积分问题的感性认识x1sin (2)⽤中点加速⽅法计算xe 的⼀阶导数三、基本原理(计算公式)(1)龙贝格算法梯形递推公式∑-=++=10212)(22n k k n n x f h T T加权平均公式:n n n S T T =--1442 n n n C S S =--144222 n nn R C C =--144323 (2)中点加速中点公式: G(h)=(f(a+h)-f(a-h))/2/h 加权平均:G1(h)=4*G(h/2)/3-G(h)/3 G2(h)=16*G1(h/2)/15-G1(h)/15 G3(h)=64*G2(h/2)/63-G2(h)/63四、算法设计与实现(流程图,关键点)中点加速:输⼊数据后根据公式计算导数值五、输⼊与输出图2.2梯形递推算法流程图图2.3龙贝格算法流程图(1) ⽤龙贝格算法计算dx xx1sin 输⼊:积分区间,误差限输出:序列Tn ,Sn,Cn,Rn 及积分结果 (2)⽤中点加速⽅法计算xe 的⼀阶导数输⼊:求导节点,步长输出:求得的导数值,精确值六、结果讨论和分析代码#includeusing namespace std;double f(double x){if(x==0)return 1;return sin(x)/x;}int main(){ifstream fin;fin.open("E:\\t.txt");if(!fin){cout<<"error opening input stream"< system("pause");return 0;}double a,b,e,t1,t2,s1,s2,c1,c2,r1,r2; double x,h,s;fin>>a>>b>>e;cout<<"积分区间为["<cout<<"k T2 S2 C2 R2"<h=b-a;t1=(f(a)+f(b))*h/2;cout<<0<<" "<int k;for(k=1;k<=10;k++,h=h/2,t1=t2,s1=s2){ s=0;x=a+h/2;do{s=s+f(x);x=x+h;}while(xt2=t1/2+h*s/2;s2=t2+(t2-t1)/3;}c2=s2+(s2-s1)/15;if(k==2){cout<c1=c2;continue;}r2=c2+(c2-c1)/63;cout<if(k==3){r1=r2;c1=c2;continue;}if(fabs(r2-r1)cout<<"数值积分结果为"< break;}r1=r2;c1=c2;}system("pause");return 0;}中点加速算法#include#include#includeusing namespace std; double f(double x){ return exp(x);}}double g(double x,double h){return (f(x+h)-f(x-h))/2/h;}double g1(double x,double h){return 4*g(x,h/2)/3-g(x,h)/3;}double g2(double x,double h){return 16*g1(x,h/2)/15-g1(x,h)/15;}double g3(double x,double h){return 64*g2(x,h/2)/63-g2(x,h)/63;}int main(){ifstream fin;fin.open("E:\\t.txt");if(!fin){cout<<"error opening input stream"<system("pause");return 0;}double a,h;while(fin>>a>>h)cout<<"当x="<<a<< ",步长h="<< h<<",x处⼀阶导数值精确值为"<<f1(a)<<",中点加速求得x处⼀阶导数值为"<<g3(a,h)<<",误差为"<<f1(a)-g3(a,h)<<endl;</p>system("pause");fin.close();return 0;}实验三⾮线性⽅程求根迭代法⼀、实验⽬的(1)熟悉⾮线性⽅程求根简单迭代法,⽜顿迭代及⽜顿下⼭法(2)能编程实现⽜顿下⼭法(3)认识选择迭代格式的重要性(4)对迭代速度建⽴感性的认识;分析实验结果体会初值对迭代的影响⼆、实验内容⽤⽜顿下⼭法解⽅程013=--x x (初值为0.6)三、基本原理(计算公式)求⾮线性⽅程组的解是科学计算常遇到的问题,有很多实际背景.各种算法层出不穷,其中迭代是主流算法。

合工大JAVA实验报告

合工大JAVA实验报告

《Java技术》实验报告实验一:2016 年10 月11《Java技术》实验报告实验二:2016 年10 月11z+=c;}public static void main(String args[]){Point2D p2d1=new Point2D(10,3);Point2D p2d2=new Point2D(2,2);Point3D p3d1=new Point3D(10,11,0);Point3D p3d2=new Point3D(1,6,0);Point3D p3d3=new Point3D(p2d1,16);System.out.println("distance2D="+distance2D(p2d1,p2d2));System.out.println("distance3D="+distance3D(p3d1,p3d2));}}运行结果:五、实验结论、分析、思考题与心得体会通过本次实验,我有以下几方面的收获、认识和体会:1、学会了类的继承、封装、多态的基本应用,学会了两个方法aqrt()和pow()在程序中的运用。

2、加深了Java中相关语法的认识:①子类继承父类的非私有成员,但是不能继承构造方法,必须用super()来调用父类的构造方法。

②构造方法可以通过形参的个数、类型、排列不同来重载。

③Math类属于ng包,并且pow()和sqrt()都是static静态方法,可以直接通过Math.pow()和Math.sqrt()来调用。

①Static静态方法只能直接调用静态成员,不能直接调用非静态成员。

《Java技术》实验报告实验三:2016 年10 月11一、实验目的1. 掌握Java中GUI程序的编写,包括事件监听机制。

2.掌握Java的网络通信编程,ServerSocket,Socket类的使用。

3.掌握Java中多线程的编程,Thread类,Runnable接口的使用。

合肥工业大学计算机毕业实习报告范文(可编辑).doc

合肥工业大学计算机毕业实习报告范文(可编辑).doc

合肥工业大学计算机毕业实习报告范文(可编辑) 合肥工业大学计算机毕业实习报告示范篇1:合肥工业大学计算机毕业实习报告示范篇技术是近年来在数字移动通信过程中出现的一种先进的无线扩频通信技术。

能够满足市场对移动通信容量和质量的高要求。

它具有频谱利用率高、语音质量好、保密性强、掉线率低、电磁辐射小、容量大、覆盖范围广等特点。

它可以大大降低投资和运营成本。

码分多址首先由高通公司在美国推出。

与全球移动通信系统一样,码分多址也有第0代及以上代技术。

中国联通推出的码分多址属于发电技术。

鼎晖电子的关键技术:合肥荣事达三洋电器有限公司在中共合肥市委、市国资委的领导下,解放思想,突破改革,提出“战略”,力争实现年销售收入1亿元以上,进入产值100亿元的企业行列。

在行业三大国际品牌中,合肥荣事达三洋电器有限公司率先成为“技术领先、质量领先、技术领先”xx年,公司在前一年快速增长的基础上实现了工业产值、销售收入、利税等主要经济指标的增长。

洗衣机的国内市场份额已跃升至行业第四位,并已成为上市家电企业的蓝筹股。

I 、概述、施工技术要求:平时砌筑砂浆应均匀光滑,不得有凹凸不平的情况。

注意事项:iii 、实践总结或经验。

通过三个月的实践,我获得了很多实践知识。

以前从教科书中学到的知识也在实践中得到了验证。

我们也学到了很多具体的建筑知识,也学到了很多建筑过程。

这些知识比理论更灵活,更具可操作性。

同时,也注意到测试在施工中的重要性。

在建筑工地实习的生活相对困难。

没有学校,很容易在施工现场面对恶劣的环境。

在施工现场工作的时间通常是不固定的。

随着项目的进展,我习惯了随时加班。

在建筑工地工作的老师是最努力的。

他们在建筑工地的生活也很苦。

他们中午不休息,家里也没有丰富的食物。

他们只是看着自己辛苦的工作,在温暖的地方津津有味地吃着。

他们看着自己的黑脸,微笑时露出洁白的牙齿。

这给了我一种深刻的感觉。

首先,我对未来的工作环境有了更直观的了解。

虽然我们仍然要在恶劣的环境中努力工作,但我们享受着一个接一个被征服的快乐。

合工大随机信号分析matlab仿真实验报告

合工大随机信号分析matlab仿真实验报告

实验一SQL语句使用1.实验目的(1)熟悉SSMS中查询编辑器的使用。

(2)掌握使用SQL语句完成数据的定义、查询和更改等功能。

2.实验要求(1)了解SQL Server的基本数据类型。

(2)了解数据库表关联、视图等概念。

3.实验内容(1)启动SQL Server 2005的SQL Server Management Studio(SSMS),在SSMS 的查询编辑器中使用SQL语句创建学生管理数据库xsglsjk,在数据库中创建三张表student、course、sc,表结构见书上P33-34页。

create table student(sno char(7)primary key,sname char(10)not null,ssex char(2)check(ssex='男'or ssex='女'),sage tinyint check(sage>=15 and sage<=45),sdept char(20))create table course(cno char(6)not null,cname char(20)not null,ccredit tinyint check(ccredit>0),semester tinyint check(semester>0),primary key (cno))create table sc(sno char(7)not null,cno char(6)not null,grade smallint,primary key (sno,cno),foreign key(sno)references student(sno),foreign key(cno)references course(cno))(2)在SSMS中,向student、course、sc数据表中输入一些数据。

(3)完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询)(见P65-66页)。

合工大嵌入式系统实验报告

合工大嵌入式系统实验报告

计算机与信息学院《嵌入式系统》实验报告学生姓名:学号:专业班级:2014 年 6 月20 日实验一(1):熟悉Linux 开发环境一、实验目的熟悉Linux 开发环境,学会基于Mini6410 的Linux 开发环境的配置和使用。

使用Linux 的arm-linux-gcc 编译,minicom串口方式下载调试二、实验内容本次实验使用Fedora 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。

创建一个新目录,并在其中编写hello.c 和Makefile 文件。

学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。

下载已经编译好的文件到目标开发板上运行。

三、实验设备及工具(包括软件调试工具)硬件:Mini6410嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。

软件:PC机操作系统Fedora9+MINICOM+ARM-LINUX 开发环境四、实验步骤1 、建立工作目录[root@zxt smile]# mkdir hello[root@zxt smile]# cd hello2 、编写程序源代码在 Linux 下的文本编辑器有许多,常用的是 vi 和 Xwindow 界面下的 gedit 等,开发过程中推荐使用 vi。

Kdevelope、anjuta 软件的界面与 vc6.0 类似,使用它们对于熟悉 windows 环境下开发的用户更容易上手。

实际的 hello.c 源代码较简单,如下:#include <stdio.h>main() {printf(“hello world \n”);}我们可以是用下面的命令来编写 hello.c 的源代码,进入 hello 目录使用 vi 命令来编辑代码:[root@zxt hello]# vi hello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按 Esc 键进入命令状态,再用命令“:wq”保存并退出。

合肥工业大学数据库实验报告

合肥工业大学数据库实验报告

计算机与信息学院数据库系统概论实验报告专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点四号实验楼第四机房2013 ~2014 学年第二学期实验1 使用向导创建和删除数据库一、实验目的1.熟悉SQL Server 2008中SQL Server Management Studio的环境;2.理解数据库的逻辑结构和物理结构;3.掌握使用向导创建和删除数据库的方法;二、实验要求1.熟练使用SSMS进行数据库的创建和删除;2.完成实验报告(实验报告的格式见附录);三、实验内容设有一学籍管理系统,其数据库名为“EDUC”。

初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。

数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。

日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。

1、使用SQL Server Management Studio(简称SSMS)创建数据库;2、修改数据库EDUC1的相关属性值,如数据文件和日志文件的名字、大小、增长方式、存储路径等;3、数据库的备份与恢复;4、使用向导删除上面建立的数据库;四、实验步骤1.使用SQL Server Management Studio(简称SSMS)创建数据库。

(1)启动SSMS在开始菜单中:所有程序-Microsoft SQL Server 2008 -SQL Server Management Studio ,如下图所示:(2)建立数据库在“对象资源管理器”窗口中,建立上述数据库EDUC。

在数据库节点上,右击选择新建数据库,按实验内容的要求,对数据文件和日志文件进行设置。

如下所示,点击确定。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机与信息学院信息隐藏实验报告专业班级信息安全13-1班学生姓名及学号马骏 2013211869 课程教学班号任课教师郑淑丽实验指导教师郑淑丽实验地点20 ~20 学年第学期实验1 BMP位图信息隐藏一、实验目的学习BMP格式文件,并编程实现对位图文件信息隐藏二、实验要求将TXT文件嵌入BMP 文件中三、问题描述1、BMP位图文件的格式?2、有哪几种方法隐藏信息,分别采用什么样的数据结构3、随机选取如何避免“碰撞”的出现四、算法思想1、BMP位图文件格式0000h~0001h 2字节-------------------------bm的ASC码0002h~0005h 4字节-------------------------文件大小102718字节0006h~0009h 4字节-------------------------全为0000Ah~000Dh 4字节-------------------------偏移量118字节000Eh~0011h 4字节-------------------------位图信息块大小40字节0012h~0015h 4字节-------------------------宽4500016h~0019h 4字节-------------------------高450001Ah~001Bh 2字节-------------------------恒为01h 00h001Ch~001Dh 2字节-------------------------颜色所占二进制位数值04h 00h=4 16色位图001Eh~0021h 4字节-------------------------压缩方式=0无压缩0022h~0025h 4字节-------------------------图像数据区大小102600字节0026h~0029h 4字节-------------------------水平每米多少像素39个002Ah~002Dh 4字节-------------------------垂直每米多少像素39个002Eh~0031h 4字节-------------------------图像所用颜色数=00032h~0035h 4字节-------------------------重要颜色数=00036h~0076h 64字节-------------------------颜色表0077h~1913Dh 102600字节-------------------------图像数据区2、(1)、在图片图像数据区的一个连续的数据区采用整字节替换的方法(2)、在图像数据的最后增加文本信息的字节(3)、顺序选取每个文本信息字节的每一位替换图像数据区的一个连续的数据区每个字节的最后一位。

(4)、顺序选取每个文本信息字节的每一位替换图像数据区随机选取一个字节的最后一位。

(5)、首先对颜色表排序,比对顺序选取每个文本信息字节的每一位与图像数据区的一个连续的数据区每个字节的最后一位,如果不一致则不断选取相近的颜色,直到颜色序号二进制最后一位与文本信息的字节最后一位一致。

(6)首先对颜色表排序,比对顺序选取每个文本信息字节的每一位与图像数据区的随机选取的数据区每个字节的最后一位,如果不一致则不断选取相近的颜色,直到颜色序号二进制最后一位与文本信息的字节最后一位一致。

3、为了避免“碰撞”则隐藏程序和解密程序需要通过一个协议,规定一个像素点只能使用一次,即隐藏时对使用过的像素点做记录,如果像素点使用过,则产生下一个随机数。

五、模块划分const int max=500000;char huancun[max];//从文件中读入的字符char txthuancun[max];//txt 中的字符char writehuancun[max];//可以写进文件中的字符串long int writehuancunnumber=0;//准备写入文件中的个数long int huancunnumber=0;//从文件中读出字符个数long int txthuancunnumber=0;void read(const char* realfile)//读入huancun[]void txtread(const char* realfile)//读入txthuancun[]void write(const char*yasuofile)void deal8bit(char kp)//仅仅是显示二进制文件的函数void easyswitch()//简单的从100开始置换void endswitch()int calculate8bit(char kp,int byte)//返回一个字符第byte位为0 或1 从右往左数int getbegin()//得到偏移量的大小下一个就是数据区的开始即begin的值char chang8bit(char inputtxt,char bmp,int byte)//txt的第byte 被bmp第八位代替从左向右char changelastbyte(char bmpinput,char txt,int byte) //bmp字节的第8位被txt字节的第byte 位代替从左向右void middleswitch()void highswitch() //还没有解决碰撞问题int caculatechar4(char fun[4])//计算4个char的十进制大小权重1 3 2int caculatelastbit4(char zifu)//计算字节的最后四位代表的十进制数char calculateaddlast4bit(char pt,int colornumber)//第一个字符的前四位保留后四位用这个int 改成的二进制替换class color16//16色颜色元{public: char bit4[4];int myposision;int bitnumber;//char bit[4] 10进制int colornumber;//第几个颜色0到15号颜色};class colortable16//16色颜色表{public: colortable16()void setcolortable(char fun[4],int colornumber)void exchange()//排序int getnextcolornumber(char zifu)//得到相近颜色的颜色好int mycolortable16number;color16 mycolortable16[17];};void middlehidepluspower132()void highhidepluspower132()void discodehighhidepluspower132()//解密函数六、测试数据隐藏信息:hello markchalse,this is a secretnumber 6424155please put this in an code小刀司令程序过程:源文件整字节替换顺序字节末位替换随机字节末位替换文件末位增加字节选择相近颜色顺序字节末位替换选择相近颜色随机字节末位替换源文件整字节替换顺序字节末位替换随机字节末位替换文件末位增加字节选择相近颜色顺序字节末位替换选择相近颜色随机字节末位替换程序分析:在整字节替换中得到的图片产生偏移,而直接对字节末位做替换的程序,会使像素点的颜色反差较大,如果是在颜色表选择相近颜色再对字节末位做替换效果较好,但在纯色区域表现不佳。

在图像数据区后增加字节,没有和原图产生差异,但文件的大小有增加,而且是明文容易被发现。

七、源程序(见附录)八、总结此次实验,使我在学习信息隐藏技术原理的基础上,进一步学习了对位图文件的编程。

更加深了我对信息隐藏的理解。

但程序中依然存在着很多不足,希望在以后的学习中加以完善。

Hidemessage1.cpp/*基本要求:txt 嵌入bmp 文件中*/#include<iostream>#include<string>#include<fstream>#include <sstream>#include<math.h>using namespace std;const char* readbmpfile="n666.bmp";const char* writefile="n888.bmp";const char* readtxtfile="n2.txt";const char* writetxtfile="n999.txt";const int max=500000;char huancun[max];//从文件中读入的字符char txthuancun[max];//txt 中的字符char writehuancun[max];//可以写进文件中的字符串long int writehuancunnumber=0;//准备写入文件中的个数long int huancunnumber=0;//从文件中读出字符个数long int txthuancunnumber=0;void read(const char* realfile)//读入huancun[]{huancunnumber=0;ifstream inputfile;inputfile.open(realfile);if(!inputfile){cout<<"no file"<<endl;}char a;while(!inputfile.eof()){a=inputfile.get();huancun[huancunnumber]=a;huancunnumber++;}inputfile.close();}void txtread(const char* realfile)//读入txthuancun[]{txthuancunnumber=0;ifstream inputfile;inputfile.open(realfile);if(!inputfile)cout<<"no file"<<endl;}char a;while(!inputfile.eof()){a=inputfile.get();txthuancun[txthuancunnumber]=a;txthuancunnumber++;}inputfile.close();for(int x=0;x<txthuancunnumber;x++)cout<<txthuancun[x];cout<<endl;}void write(const char*yasuofile){ofstream outputfile;outputfile.open(yasuofile);long int x;for(x=0;x<writehuancunnumber;x++){outputfile<<writehuancun[x];}outputfile.close();}void deal8bit(char kp)//仅仅是显示二进制文件的函数{char n1,n2,n3,n4,n5,n6,n7,n8;char kk;_asm{mov n1,10000000b;mov n2,01000000b;mov n3,00100000b;mov n4,00010000b;mov n5,00001000b;mov n6,00000100b;mov n7,00000010b;mov n8,00000001b;}kk=kp;_asm{and kk,10000000b; }if(kk==n1){cout<<"1";}else cout<<"0";kk=kp;_asm{and kk,01000000b; }if(kk==n2){cout<<"1";}else cout<<"0";kk=kp;_asm{and kk,00100000b; }if(kk==n3){cout<<"1";}else cout<<"0";kk=kp;_asm{and kk,00010000b; }if(kk==n4){cout<<"1";}else cout<<"0";kk=kp;_asm{and kk,00001000b;}if(kk==n5){cout<<"1";}else cout<<"0";kk=kp;_asm{and kk,00000100b;}if(kk==n6){cout<<"1";}else cout<<"0";kk=kp;_asm{and kk,00000010b;}if(kk==n7){cout<<"1";}else cout<<"0";kk=kp;_asm{and kk,00000001b;}if(kk==n8){cout<<"1";}else cout<<"0";};void easyswitch()//简单的从100开始置换{int x;cout<<endl;cout<<"------------------------------easyswitch program-------------------------------"<<endl;writehuancunnumber=huancunnumber;for(x=0;x<huancunnumber;x++)writehuancun[x]=huancun[x];for(x=0;x<txthuancunnumber;x++)writehuancun[x+1500]=txthuancun[x];}void endswitch(){int end=huancunnumber,x;//最后就指数据区的最后cout<<"------------------------------endswitch program-------------------------------"<<endl;writehuancunnumber=huancunnumber;for(x=0;x<huancunnumber;x++)writehuancun[x]=huancun[x];for(x=0;x<txthuancunnumber;x++){writehuancun[writehuancunnumber]=txthuancun[x];writehuancunnumber++;}}int calculate8bit(char kp,int byte)//返回一个字符第byte位为0 或1 从右往左数{char n1,n2,n3,n4,n5,n6,n7,n8;char kk;_asm{mov n1,10000000b;mov n2,01000000b;mov n3,00100000b;mov n4,00010000b;mov n5,00001000b;mov n6,00000100b;mov n7,00000010b;mov n8,00000001b;}if(byte==8){kk=kp;_asm{and kk,10000000b;}if(kk==n1){// cout<<"1";return 1;}else{// cout<<"0";return 0;}}if(byte==7){kk=kp;_asm{and kk,01000000b;}if(kk==n2){// cout<<"1";return 1;}else{// cout<<"0";return 0;}}if(byte==6){kk=kp;_asm{and kk,00100000b;}if(kk==n3){// cout<<"1";return 1;}else{// cout<<"0";return 0;}}if(byte==5){kk=kp;_asm{and kk,00010000b;}if(kk==n4){// cout<<"1";return 1;}else{// cout<<"0";return 0;}}if(byte==4){kk=kp;_asm{and kk,00001000b;}if(kk==n5){// cout<<"1";return 1;}else{// cout<<"0";return 0;}}if(byte==3){kk=kp;_asm{and kk,00000100b;}if(kk==n6){// cout<<"1";return 1;}else{// cout<<"0";return 0;}}if(byte==2){kk=kp;_asm{and kk,00000010b;}if(kk==n7){// cout<<"1";return 1;}else{// cout<<"0";return 0;}}if(byte==1){kk=kp;_asm{and kk,00000001b;}if(kk==n8){// cout<<"1";return 1;}else{// cout<<"0";return 0;}}}int getbegin()//得到偏移量的大小下一个就是数据区的开始即begin的值{int pianyi=0,x;char pianyi1=huancun[10];//从第11个字节开始的四个字节char pianyi2=huancun[11];char pianyi3=huancun[12];char pianyi4=huancun[13];for(x=0;x<8;x++){if(calculate8bit(pianyi1,x+1))//一定要注意:直观上的第8位实际上只是数字的最低位第几位这个是从左往右还是从右往左要一致{int kk=1; //这里按从右往左算没有第0位这个说法所以还要x+1for(int t=0;t<x;t++)//x最大为7 最高位2的7次方没错kk=kk*2;pianyi+=kk;}}for(x=0;x<8;x++){if(calculate8bit(pianyi2,x+1)) //这里按从右往左算没有第0位这个说法所以还要x+1{int kk=1;for(int t=0;t<x+8;t++)kk=kk*2;pianyi+=kk;}}for(x=0;x<8;x++){if(calculate8bit(pianyi3,x+1)) //这里按从右往左算没有第0位这个说法所以还要x+1{int kk=1;for(int t=0;t<x+16;t++)kk=kk*2;pianyi+=kk;}}for(x=0;x<8;x++){if(calculate8bit(pianyi4,x+1)) //这里按从右往左算没有第0位这个说法所以还要x+1{int kk=1;for(int t=0;t<x+24;t++)kk=kk*2;pianyi+=kk;}}return pianyi;}char chang8bit(char inputtxt,char bmp,int byte)//txt的第byte 被bmp第八位代替从左向右{char txt=inputtxt;char n1,n2,n3,n4,n5,n6,n7,n8,ntrue,nfalse;_asm{mov n1,10000000b;mov n2,01000000b;mov n3,00100000b;mov n4,00010000b;mov n5,00001000b;mov n6,00000100b;mov n7,00000010b;mov n8,00000001b;mov ntrue,00000001b;mov nfalse,11111110b;and bmp,00000001;}if(bmp==ntrue){if(byte==1){_asm{or txt,10000000b}}if(byte==2){_asm{or txt,01000000b}}if(byte==3){_asm{or txt,00100000b}}if(byte==4){_asm{or txt,00010000b}}if(byte==5){_asm{or txt,00001000b}}if(byte==6){_asm{or txt,00000100b}}if(byte==7){_asm{or txt,00000010b}}if(byte==8){_asm{or txt,00000001b}}}else{if(byte==1){_asm{and txt,01111111b;}}if(byte==2){_asm{and txt,10111111b;}}if(byte==3){_asm{and txt,11011111b;}}if(byte==4){_asm{and txt,11101111b;}}if(byte==5){_asm{and txt,11110111b;}}if(byte==6){_asm{and txt,11111011b;}}if(byte==7){_asm{and txt,11111101b;}}if(byte==8){_asm{and txt,11111110b;}}}return txt;};char changelastbyte(char bmpinput,char txt,int byte) //bmp字节的第8位被txt字节的第byte 位代替从左向右{char bmp=bmpinput;char n1,n2,n3,n4,n5,n6,n7,n8,ntrue,nfalse;char kk;_asm{mov n1,10000000b;mov n2,01000000b;mov n3,00100000b;mov n4,00010000b;mov n5,00001000b;mov n6,00000100b;mov n7,00000010b;mov n8,00000001b;mov ntrue,00000001b;mov nfalse,11111110b;}if(byte==1){kk=txt;_asm{and kk,10000000b;}if(kk==n1){// cout<<"1";_asm{or bmp,00000001b;}return bmp;}else{// cout<<"0";_asm{and bmp,11111110b;}return bmp;}}if(byte==2){kk=txt;_asm{and kk,01000000b;}if(kk==n2){// cout<<"1";_asm{or bmp,00000001b;}return bmp;}else{// cout<<"0";_asm{and bmp,11111110b;}return bmp;}}if(byte==3){kk=txt;_asm{and kk,00100000b;}if(kk==n3){// cout<<"1";_asm{or bmp,00000001b;}return bmp;}else{// cout<<"0";_asm{and bmp,11111110b;}return bmp;}}if(byte==4){kk=txt;_asm{and kk,00010000b;}if(kk==n4){// cout<<"1";_asm{or bmp,00000001b;}return bmp;}else{// cout<<"0";_asm{and bmp,11111110b;}return bmp;}}if(byte==5){kk=txt;_asm{and kk,00001000b;}if(kk==n5){// cout<<"1";_asm{or bmp,00000001b;}return bmp;}else{// cout<<"0";_asm{and bmp,11111110b;}return bmp;}}if(byte==6){kk=txt;_asm{and kk,00000100b;}if(kk==n6){// cout<<"1";_asm{or bmp,00000001b;}return bmp;}else{// cout<<"0";_asm{and bmp,11111110b;}return bmp;}}if(byte==7){kk=txt;_asm{and kk,00000010b;}if(kk==n7){// cout<<"1";_asm{or bmp,00000001b;}return bmp;}else{// cout<<"0";_asm{and bmp,11111110b;}return bmp;}}if(byte==8){kk=txt;_asm{and kk,00000001b;}if(kk==n8){// cout<<"1";_asm{or bmp,00000001b;}return bmp;}else{// cout<<"0";_asm{and bmp,11111110b;}return bmp;}}}void middleswitch(){int begin,end=huancunnumber,x,y,i;//最后就指数据区的最后cout<<"------------------------------begin middle switch program-------------------------------"<<endl;begin=getbegin();begin++;// 注意bmp 记录的偏移字节数并不是图像数据区的开始坐标它加1才是!!!!cout<<"begin:"<<begin<<endl;writehuancunnumber=huancunnumber;for(x=0;x<huancunnumber;x++)writehuancun[x]=huancun[x];i=0;for(x=0;x<txthuancunnumber;x++){for(y=1;y<=8;y++){writehuancun[i+begin+1030]=changelastbyte(writehuancun[i+begin+1030],txthuancun[x],y);i++;}}}void highswitch() //还没有解决碰撞问题{int begin,end=huancunnumber,x,y,i;//最后就指数据区的最后cout<<"------------------------------begin high switch program-------------------------------"<<endl;begin=getbegin();begin++;// 注意bmp 记录的偏移字节数并不是图像数据区的开始坐标它加1才是!!!!cout<<"begin:"<<begin<<endl;writehuancunnumber=huancunnumber;for(x=0;x<huancunnumber;x++)writehuancun[x]=huancun[x];i=0;srand(9527);for(x=0;x<txthuancunnumber;x++){for(y=1;y<=8;y++){writehuancun[begin+1030+rand()]=changelastbyte(writehuancun[i+begin+1030],txthuancun[x],y) ;i++;}}srand(9527);cout<<endl<<"hhahahaha"<<rand()<<endl;cout<<endl<<"hhahahaha"<<rand()<<endl;cout<<endl<<"hhahahaha"<<rand()<<endl;srand(27149);cout<<endl<<"hhahahaha"<<rand()<<endl;cout<<endl<<"hhahahaha"<<rand()<<endl;cout<<endl<<"hhahahaha"<<rand()<<endl;srand(9527);cout<<endl<<"hhahahaha"<<rand()<<endl;cout<<endl<<"hhahahaha"<<rand()<<endl;cout<<endl<<"hhahahaha"<<rand()<<endl;};int caculatechar4(char fun[4])//计算4个char的十进制大小权重1 3 2{int x,result=0;//0 1 2 3 9 10 11 为0for(x=1;x<=8;x++){if(calculate8bit(fun[0],x)){int k=1;for(int y=0;y<x-1;y++)k=k*2;result+=k;}}//0 1 4 5 9 12 13 为0for(x=1;x<=8;x++){if(calculate8bit(fun[1],x)){int k=1;for(int y=0;y<x+16-1;y++)k=k*2;result+=k;}}//奇数颜色全为0for(x=1;x<=8;x++){if(calculate8bit(fun[2],x)){int k=1;for(int y=0;y<x+8-1;y++)k=k*2;result+=k;}}/* //最后一个亮度char 竟然全为0for(x=1;x<=8;x++){if(calculate8bit(fun[3],x)){int k=1;for(int y=0;y<x+24-1;y++)k=k*2;result+=k;}}*/return result;};int caculatelastbit4(char zifu)//计算字节的最后四位代表的十进制数{int x,result=0;for(x=1;x<=4;x++){if(calculate8bit(zifu,x)){int k=1;for(int y=1;y<x;y++)k=k*2;result+=k;}}return result;};char calculateaddlast4bit(char pt,int colornumber)//第一个字符的前四位保留后四位用这个int 改成的二进制替换{// or pt,a;//千万记住内联汇编不能用两个变量or 或者and_asm{and pt,11110000b;}if(colornumber==0){_asm{or pt,00000000b;}}if(colornumber==1){_asm{or pt,00000001b;}}if(colornumber==2){_asm{or pt,00000010b;}}if(colornumber==3){_asm{or pt,00000011b;}}if(colornumber==4){_asm{or pt,00000100b;}}if(colornumber==5){_asm{or pt,00000101b;}}if(colornumber==6){_asm{or pt,00000110b;}}if(colornumber==7){_asm{or pt,00000111b;}}if(colornumber==8){_asm{or pt,00001000b;}}if(colornumber==9){_asm{or pt,00001001b;}}if(colornumber==10){_asm{or pt,00001010b;}}if(colornumber==11){_asm{or pt,00001011b;}}if(colornumber==12){_asm{or pt,00001100b;}}if(colornumber==13){_asm{or pt,00001101b;}}if(colornumber==14){_asm{or pt,00001110b;}}if(colornumber==15){_asm{or pt,00001111b;}}return pt;};class color16//16色颜色元{public:char bit4[4];int myposision;int bitnumber;//char bit[4] 10进制int colornumber;//第几个颜色0到15号颜色};class colortable16//16色颜色表{public:colortable16(){mycolortable16number=0;};void setcolortable(char fun[4],int colornumber){for(int x=0;x<4;x++){mycolortable16[mycolortable16number].bit4[x]=fun[x];}mycolortable16[mycolortable16number].bitnumber=caculatechar4(fun);//计算4个char 的十进制大小// mycolortable16[mycolortable16number].myposition=position;mycolortable16[mycolortable16number].colornumber=colornumber;mycolortable16number++;};void exchange()//排序{int x,y;color16 linshicolor;for(x=0;x<mycolortable16number-1;x++){for(y=x+1;y<mycolortable16number;y++){if(mycolortable16[x].bitnumber>mycolortable16[y].bitnumber){linshicolor=mycolortable16[x];mycolortable16[x]=mycolortable16[y];mycolortable16[y]=linshicolor;}}}};/*int getnextposition(char zifu)//得到下一个相邻颜色的颜色表位置{int x,y;y=caculatelastbit4(zifu);//计算字节的最后四位代表的十进制数for(x=0;x<mycolortable16number;x++){if(mycolortable16[x].colornumber==y) return mycolortable16[x+1].myposition;}};*/int getnextcolornumber(char zifu)//得到相近颜色的颜色好{int x,y;y=caculatelastbit4(zifu);//计算字节的最后四位代表的十进制数for(x=0;x<mycolortable16number;x++){if(mycolortable16[x].colornumber==y){cout<<"number:"<<y<<" ";if(x==mycolortable16number-1){return mycolortable16[0].colornumber;}else{cout<<mycolortable16[x+1].colornumber<<" ";return mycolortable16[x+1].colornumber;}}}};int mycolortable16number;color16 mycolortable16[17];};void middlehidepluspower132(){cout<<"-------------------------middle hide plus program------------------"<<endl;//创建图像表、初始化、排序colortable16 mark;char data[4];int begin,end=huancunnumber,x,y,i;//最后就指数据区的最后int start=54;begin=getbegin();begin++;// 注意bmp 记录的偏移字节数并不是图像数据区的开始坐标它加1才是!!!!cout<<"begin:"<<begin<<endl;writehuancunnumber=huancunnumber;for(x=0;x<huancunnumber;x++)writehuancun[x]=huancun[x];for(x=0;x<16;x++){for(y=0;y<4;y++)data[y]=huancun[y+start];mark.setcolortable(data,x);start+=4;}mark.exchange();for(x=0;x<mark.mycolortable16number;x++){cout<<mark.mycolortable16[x].bitnumber<<""<<mark.mycolortable16[x].colornumber<<endl;}//1、提取一个字符8位信息//2、对每一位信息从图像数据区每一字节比对//3、如果一致下一个//4、不一致寻找排序后图像表对应下一个颜色的图像数据区位置(myposition)进行二进制位最后一位比较如果相同则替换,否则循环找下一颜色i=0;for(x=0;x<txthuancunnumber;x++){for(y=1;y<=8;y++){char f=writehuancun[i+begin+1030];while(writehuancun[i+begin+1030]!=changelastbyte(f,txthuancun[x],y)){writehuancun[i+begin+1030]=calculateaddlast4bit(writehuancun[i+begin+1030],mark.getnextcolo rnumber(writehuancun[i+begin+1030]));//第一个字符的前四位保留后四位用这个int 改成的二进制替换f=writehuancun[i+begin+1030];cout<<i<<" ";}i++;}}};void highhidepluspower132(){cout<<"-------------------------high hide plus program------------------"<<endl;unsigned int key=0;while(key<1||key>65534){cout<<"please enter your key 1=<key<=65534 key=";cin>>key;}srand(key);int xiangsutable[10000];//不能用max了太大了程序崩溃了int xiangsutablenumber=0;int check=1;//创建图像表、初始化、排序colortable16 mark;char data[4];int begin,end=huancunnumber,x,y,i;//最后就指数据区的最后int start=54;begin=getbegin();begin++;// 注意bmp 记录的偏移字节数并不是图像数据区的开始坐标它加1才是!!!!cout<<"begin:"<<begin<<endl;writehuancunnumber=huancunnumber;for(x=0;x<huancunnumber;x++)writehuancun[x]=huancun[x];for(x=0;x<16;x++){for(y=0;y<4;y++)data[y]=huancun[y+start];mark.setcolortable(data,x);start+=4;}mark.exchange();for(x=0;x<mark.mycolortable16number;x++){cout<<mark.mycolortable16[x].bitnumber<<""<<mark.mycolortable16[x].colornumber<<endl;}//1、提取一个字符8位信息//2、对每一位信息从图像数据区每一字节比对//3、如果一致下一个//4、不一致寻找排序后图像表对应下一个颜色的图像数据区位置(myposition)进行二进制位最后一位比较如果相同则替换,否则循环找下一颜色while(check){int kk=1;i=rand();i=(double(i)/double(32767))*(double)(end-begin);for(int t=0;t<xiangsutablenumber;t++){if(i==xiangsutable[t]){kk=0;break;}}if(kk){xiangsutable[xiangsutablenumber]=i;xiangsutablenumber++;check=0;}}for(x=0;x<txthuancunnumber;x++){for(y=1;y<=8;y++){char f=writehuancun[i+begin];while(writehuancun[i+begin]!=changelastbyte(f,txthuancun[x],y)){writehuancun[i+begin]=calculateaddlast4bit(writehuancun[i+begin],mark.getnextcolornumber(wri tehuancun[i+begin]));//第一个字符的前四位保留后四位用这个int 改成的二进制替f=writehuancun[i+begin];}cout<<"i:"<<i;cout<<" txt:";deal8bit(txthuancun[x]);cout<<" y:"<<y<<" ";deal8bit(writehuancun[i+begin]);cout<<" ";check=1;while(check){int kk=1;i=rand();i=(double(i)/double(32767))*(double)(end-begin);for(int t=0;t<xiangsutablenumber;t++){if(i==xiangsutable[t]){kk=0;break;}}if(kk){xiangsutable[xiangsutablenumber]=i;xiangsutablenumber++;check=0;}}}}};void discodehighhidepluspower132(){cout<<"-------------------------discode high hide plus program------------------"<<endl;unsigned int key=0;while(key<1||key>65534){cout<<"please enter your key 1=<key<=65534 key=";cin>>key;}srand(key);int xiangsutable[10000];//不能用max了太大了程序崩溃了int xiangsutablenumber=0;int check=1;int begin,end=huancunnumber-1,x,y,i;// 注意重新读取的隐藏后的图片会比原始图像多一字节!!!!原因未知begin=getbegin();begin++;// 注意bmp 记录的偏移字节数并不是图像数据区的开始坐标它加1才是!!!!cout<<"begin:"<<begin<<endl;writehuancunnumber=txthuancunnumber;//这是个bug 由于最初没有把txt的大小写进图片暂定程序记录的字符数可以升级的地方check=1;while(check){int kk=1;i=rand();i=(double(i)/double(32767))*(double)(end-begin);for(int t=0;t<xiangsutablenumber;t++){if(i==xiangsutable[t]){kk=0;break;}}if(kk){xiangsutable[xiangsutablenumber]=i;xiangsutablenumber++;check=0;}}for(x=0;x<writehuancunnumber;x++){for(y=1;y<=8;y++){writehuancun[x]=chang8bit(writehuancun[x],huancun[i+begin],y);cout<<"i:"<<i;cout<<" ";deal8bit(huancun[i+begin]);cout<<"y:"<<y<<" ";deal8bit(writehuancun[x]);check=1;while(check){int kk=1;i=rand();i=(double(i)/double(32767))*(double)(end-begin);for(int t=0;t<xiangsutablenumber;t++){if(i==xiangsutable[t]){kk=0;break;}}if(kk){xiangsutable[xiangsutablenumber]=i;xiangsutablenumber++;check=0;}}}}};int main(){read(readbmpfile);int x;int y=0;for(x=0;x<huancunnumber;x++){deal8bit(huancun[x]);y++;if(y==8){cout<<endl;y=0;}cout<<" ";}cout<<endl;txtread(readtxtfile);int quit=1;while(quit){int a;cout<<"---------------------------------select hide program---------------------------"<<endl<<"0 quit"<<endl<<"1 easy hide program"<<endl<<"2 end hide program"<<endl;cout<<"3 middle hide program"<<endl;cout<<"4 high hide program"<<endl;cout<<"5 middle hide plus program for power 1 3 2"<<endl;cout<<"6 high hide plus program for power 1 3 2"<<endl;cout<<"7 discode high hide plus program for power 1 3 2"<<endl;cin>>a;。

相关文档
最新文档