长短信与短信签名

长短信一般是指超过70个汉字的短信内容,由于长短信需要加增加长短信的协议头(6个字节),所以,每条短信就不是70个了,而是67个汉字[即字符长度是134]。6个字节的协力头如: 6位协议头格式:05
00 03 XX MM NN.

C++实现如下:

                               char bHead[20] = {0};
                               sprintf(bHead,"%c%c%c%c%c%c",5,0,3,1,SmsCount,getSmsIndex() +1); 
                               //SmsCount 拆分后短信的数量,getSmsIndex()+1 第几条拆分短信 .
				memcpy(SmsContent,bHead,6);           //SmsContent 加6位字节的头协议的短信内容
				memcpy(SmsContent + 6,content,length);//content 拆分的短信内容
				SmsLenth = length + 6;
				submit->setContent(SmsContent,SmsLenth);

那短信签名跟长短信有啥关系呢? 有这么一条公式来判断:67*N-签名字数-2<=临界区<=67*N [N指长短信拆分成为几条短信]。 如果该条短信在临界区之内,发送的短信内容的最后几位就会被短信签名覆盖,甚至导致短信内容丢失一大半。

我们来讨论数字签名覆盖的问题:假如短信的签名是"大家好love",这就是7个字数,如果发送的短信内容是字数是120,则需要拆分为2条短信,那么短信的临界区是 [125,134] ,所以短信内容发字数为120是没有问题的,如果发送的短信内容是130个字数的,则最后5个字数会被短信签名覆盖。

那如何来避免短信签名覆盖的问题呢? 很简单,发送的短信内容不能在临界区内。一般如果已经在临界区内了,我们不可能减少短信内容,那么可以通过短信内容后面添加相应N个空格之后,短信内容不在临界区内再拆分发送。如上面的要发送130个字数的,我们可以通过在短信内容添加5个空格,变成135个字数后再拆分。其实135个字数拆分的临界区是[192,201],所以135个字数不会在临界区之内。

时间: 2024-10-16 03:19:53

长短信与短信签名的相关文章

解决:铃声改变,来短信,短信设置中默认铃声的名称没有同步更新

短信界面没有关闭的情况下,在设置中进行操作,短信设置界面中不会进行刷新.因此在当MessagingPreferenceActivity处于活动(onResume)的时候重新初始化,添加代码如下: protected void onResume() { super.onResume();   loadPrefs(); // Since the enabled notifications pref can be changed outside of this activity, // we have

查询短信的短信剩余条数

/** * 查询短信的短信剩余条数 * @return */ public static String getSmsCount() { String ret_str = ""; BufferedReader rd=null; try { //http://221.179.180.158:9000/QxtSms/QxtFirewall?OperID=test&OperPass=test&SendTime=&ValidTime=&AppendID=1234&

Android实战简易教程-第三十六枪(监听短信-实现短信验证码自动填入)

一般用户喜欢用手机号作为用户名注册APP账号,这时一般都是通过手机验证码的方式进行验证,下面我们就研究一个非常实用的方法,通过监听短信-实现短信验证码的自动填入,提高用户体验. 首先我们看一下如何监听手机短信. 一.获取短信全部内容 1.新建一个SMSBroadcastReceiver: package com.example.messagecut; import java.text.SimpleDateFormat; import java.util.Date; import android.

手机安全卫士------手机防盗页面之发送短信&amp;接收短信

功能需求: 接上一篇文章,如果sim卡变更,则发送一条报警短信给安全号码 接收从安全号码发来的短信,如果内容为报警指令,则根据相应的报警指令做出相应的操作 发送短信 1.创建一个SmsManager对象 SmsManager manager = SmsManager.getDefault(); 2.通过SharedPreferences获取安全号码 String number 3.创建短信内容: content 4.分割短信: 由于每条短信只能70个字,所以我们要把它分割一下:manager.d

可用的国内免费虚拟手机号平台 在线接收短信 在线短信接收

关键词 虚拟手机号短信接码平台 在线接收短信 在线短信接收 在线接收短信 | 免费接码平台 https://www.pdflibr.com/ https://www.becmd.com/ http://z-sms.com/ 原文地址:https://www.cnblogs.com/kaibindirver/p/12287926.html

国都企信通短信平台发送手机短信的python脚本一例

一年前,由于工作需要,给以色列的同事解释一下国都短信平台的短信发送格式,本来不懂python的我硬着头皮写了一个sample,比较粗,能用,但不优美,希望以后学会python能改得像我同事写的那么优雅 #!/usr/bin/python #coding:utf8 import sys,httplib,urllib,urllib2 import xml.etree.ElementTree as ET sms=u'测试短信内容[签名部分]' #input message here with '' g

php短信接口,免认证限制少的接口,手机短信,短信验证码

下面介绍一下kewail的短信接口,链接:https://www.kewail.com/ // Works well with php5.3 and php5.6. namespace Kewail\Sms; require_once('SmsSenderUtil.php'); class SmsSingleSender {var $url;var $accesskey;var $secretkey;var $util; function __construct($accesskey, $sec

Android中 备份短信 还原短信

备份短信 读取手机里的短信,备份成xml文件保存到SD卡上. xml文件就只有一个button控件,就不再给出xml代码了. import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.xmlpull.v1.XmlSerializer; import android.app.Activity; i

系统短信 自定义短信

首先 #import <MessageUI/MessageUI.h> 然后 MFMessageComposeViewControllerDelegate 主要在这里 - (void)showMessageView { if( [MFMessageComposeViewController canSendText] ){ MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc]ini