system: [SYSTEM]

user: 3. Sipdroid信息隐藏功能实现 3.1. Sipdroid信息隐藏功能的实现 1、在用户界面的设置界面下增加“信息隐藏算法设置”选项，用于实现信息隐藏算法的选择。 信息隐藏算法选择界面实现主要代码如下： android:entries设置的内容是用户通过界面看到的内容。 android:entryValues即保存在preferences.xml中的值。 在values/strings.xml添加定义的属性信息和键值对： 信息隐藏算法设置 信息隐藏算法选择： LSB信息隐藏算法 DWT信息隐藏算法 DWT信息隐藏算法 ... 2、在实时语音通话界面实现秘密信息的输入和查看。在原有通话界面选项的基础上增加“发送消息”和“接收消息”选项。用户点击发送消息，弹出“发送秘密信息”文本框，在文本框中输入要传输的秘密信息，点击“发送”按钮发送要传输的秘密信息。 发送消息其具体的实现过程如下： 在packageorg.sipdroid.sipua.ui.callscreen.java里面添加如下代码在通话界面生成发送消息按钮。 public static final int SEND_MENU_ITEM = FIRST_MENU_ID + 11; private static EditTexttransferText； private EditTextScrectText; //要保存的文件名 private String fileName =send secret 以下代码实现的是将文本框中输入的隐藏信息以键值对的方式保存： public void onClick(DialogInterface dialog， int which) { String in= ScrectText.getText().toString(); 然后在RtpStreamSender中调用键值对的值传入到隐藏信息info中，进行lsb算法的插入。 String info=pref.getString(Secretinfo， ); byte[ ] msg=info.getBytes(); 接收消息具体的实现过程如下： 在RtpStreamReceiver类中开始秘密信息的提取，并以震动的形式提醒用户收到秘密信息。 rtp_socket.receive(rtp_packet);/*提取信息*/ mess +=GetInfo.getInfo(rtp_packet.getPayload()); if(mess.endsWith(*%*%*%)){ editor.putString(receiver_Info， mess.substring(0， mess.length()-6)); editor.commit(); mess= VibratorUtil.Vibrate(Receiver.mContext，1000); //震动100ms} 在package org.sipdroid.sipua.ui.callscreen.java里面添加如下代码在通话界面生成“接收消息”按钮，对提取的信息进行查看，主要代码如下： case RECEIVER_MENU_ITEM: finalAlertDialog.Builder dialog = new AlertDialog.Builder(this); String receive_info=pref.getString(receiver_Info， ); receiveText.setText(receive_info); dialog.setCancelable(true) .setTitle(接收秘密信息) .setView(receiveText) .setPositiveButton(确定， new DialogInterface.OnClickListener() .setNegativeButton(取消， new DialogInterface.OnClickListener() 其中重新定义了一个Vibrate手机工具类来实现震动提醒。 根据使用要求和所处于的环境，本文在经典的时间域信息隐藏-LSB算法的基础上对其进行改进来实现信息隐藏功能。信息隐藏算法的实现分为秘密信息的嵌入和秘密信息的提取。 秘密信息的嵌入步骤： 步骤1：设置一byte数组data1存放同步码 + 前标识 + 秘密信息data0+后标识 步骤2：判断载体音频长度是否大于嵌入数据的位数，即radio.length>data1.length*8。 步骤3：将data1和radio的每个字节转换成8位二进制的形式存储，分别存储到一维数组ch和二维数组chars2当中。 步骤4：用ch的每一个元素替换chars2每个元素的最低位。 步骤5：将chars2转换成一个十进制数组，再转换成Byte数组，进行传输。 秘密信息的提取步骤： 步骤1：将音频的每个字节转换成8位二进制的形式存进二维数组chars3中。 步骤2 ：提取chars3每个元素的最低位保存进chars4中，并转换成字符串d6中。 步骤3：循环判断，从下标i(0-d6.length-1)处开始，判断第i项字符是否为0。 步骤4：在前一步的基础上，如果第i项字符为0，则判断判断i-(i + 47)是否为同步码(000011111111 000011111111000011111111000011111111)，若为真，则继续判断(i + 48)-(i + 55)是否为前标识(10010001)。 步骤5：在步骤4的基础上若为真，则开始提取信息，每次循环提取8bit，并且判断是否是后标识符(10010001)。 步骤6：在步骤5的基础上判断为真，则停止提取，将字符串d6转换成字节数组，再转换成字符串info返回即为隐藏信息。 3.2. Sipdroid信息隐藏功能测试结果分析 首先从语音通话质量、电话使用的流畅度来测试实现的效果。主要从主观角度对实现信息隐藏功能的Sipdroid进行整体评价即通过主观感知质量评价标准：通过人耳对获得语音质量的主观感觉来判断语音隐藏功能实现的好坏，比较语音信号嵌入秘密信息前后人耳对语音质量的感觉是否发生变化。采用的方法是：随机选取若干实验者分别对语音信号的质量进行评分，多次进行测试然后求其平均值得到主观平均分(MOS: Mean Opinion Source)。MOS是一种绝对等级打分方法采用五级评分标准。MOS评分方法的标准详见表1。 进行主观测试的人员为5组共10人，男、女各5人，每组分别进行语音通话且每组通话时间不少于3分钟，计算各自的得分并求其平均值，如表2所示，每隔20 s记录测试数据，对比加入信息隐藏算法前后其中一组延迟率和丢包率变化情况，结果如图4、图5所示，通过加入高斯噪声测试系统的鲁棒性，分析噪声加入前后语音质量的变化。加入噪声前后其中一组的丢包率、延迟率变化情况如图6、图7所示，嵌入的秘密信息与提取的秘密信息内容如表2所示。 因为Sipdroid系统处于开放的网络环境下，所以其使用情况与当时所处于的网络环境有关，在使用 Table 1 MOS score criteri 得分 质量级别(SOS) 失真级别(DMOS) 5 优 察觉不到 4 良 刚有察觉 3 中 有察觉，稍微令人烦躁 2 差 明显察觉，令人烦躁，但可忍受 1 劣 不可忍受 表1. MOS评分标准 Table 2 Information Hiding Implementing MOS Values Tabl 语音载体 MOS值 平均值 第一组 嵌入前 4.7 4.6 4.8 4.8 4.8 4.7 4.7 第一组 嵌入后 4.3 4.2 4.4 4.2 4.3 4.2 4.3 第二组 嵌入前 4.6 4.8 4.6 4.9 4.7 4.8 4.7 第二组 嵌入后 4.4 4.2 4.3 4.6 4.2 4.2 4.3 第三组 嵌入前 4.7 4.8 4.8 4.7 4.9 4.7 4.8 第三组 嵌入后 4.3 4.2 4.5 4.2 4.4 4.2 4.3 第四组 嵌入前 4.6 4.8 4.9 4.6 4.7 4.8 4.7 第四组 嵌入后 4.3 4.3 4.5 4.1 4.2 4.4 4.3 第五组 嵌入前 4.8 4.7 4.9 4.8 4.8 4.6 4.8 第五组 嵌入后 4.2 4.3 4.6 4.2 4.4 4.4 4.4 表2. 信息隐藏实现MOS值表 图4. 加入算法前后延迟率变化图 图5. 加入算法前后丢包率变化图 图6. 加入噪声前后丢包率变化图 图7. 加入噪声前后延迟率变化图 Table 3 Information Hiding Interactive Data Sheet 组别 嵌入的信息 提取的信息 第一组 下午403开会 下午403开会 第二组 我的生日0101 我的生日0101 第三组 密码abc123 密码abc123 第四组 快来救我 快来救我 第五组 我的邮箱是123456789@qq.com 我的邮箱是123456789@qq.com 表3. 信息隐藏交互数据表 时可能具有不稳定性。通过表3的结果可以得出加入信息隐藏功能的Sipdroid系统仍然具有良好的语音质量，对比图4、图5的丢包率和延迟率，加入信息隐藏功能之后的Sipdroid系统其丢包率和延迟率变化较小，说明加入信息隐藏算法之后对语音通话的质量影响较小，说明了算法达到了不可感知性的要求。由图6和图7得到，加入噪声前后丢包率和延迟率的变化较大说明该隐藏算法的鲁棒性需要进一步的改进。由表3可以看出不管是使用汉字、英文、数字或者符号，都能保证嵌入的信息与提取的信息相同，在保证语音通话质量的同时实现了秘密信息的传递。