锦衣卫密信:格式和协议

锦衣卫密信的短信格式,是先将短信的内容用GBK编码表示,然后转换成JYW编码表示后才能确定。
当用JYW编码处理后,如果短信的全部内容,其高位地址是在0x80~0x8F之间,则短信可以用12位压缩技术,否则要用15位压缩技术。

一条短信最多有70个字符,如果采取锦衣卫密信格式,则其协议如下定义:
第一个字符必须是!或者~,!表示后面这只是一条单独短信,~表示后面是一条长短信被分成几段。
第二个字符是JYW三个符号中的一个,J表示后面的短信只进行压缩,Y表示后面的短信在压缩的基础上做了浅度加密,W表示后面的短信在压缩的基础上做了深度加密。
第三个字符表示短信的原来长度,其值在0x21~0x7E之间,值0x21表示长度为0, 值0x22表示长度为1,依此类推,最大值0x7b表示长度为90。
第四个字符表示短信的压缩长度,其值在0x21~0x7E之间,值0x21表示长度为0, 值0x22表示长度为1,依此类推,最大值0x7b表示长度为90。
第五个字符表示短信是否包含多条短信,后6位的值0x21表示这是长短信的第一段,后6位的值0x22表示这是长短信的第二段,依次类推,后6位的最大值0x2A表示这是长短信的第十段。前两位为0表示这是12位压缩方式,为1表示这是15位加密方式。特别地,值0x7e表示这条短信是该手机号码的公钥。
最后一个字符表示校验码,是前面所有字节之和除以64的余数,其值用0x21到0x60共64个数值表示,依次是余数0用0x21表示,余数1用0x22表示,依此类推,余数63用0x60表示。

所以真正用于保存短信内容的字节数是134个字节。那么短信内容应该如何处理呢?

1、大容量格式(第二个字符为J,压缩长度为0):

根据15位压缩规则,每16个字节可以压缩成15个字节,那么120个字节可以储存原来的128个字节,剩下的14个字节还能保存7个汉字,一共是71个汉字
根据12位压缩规则,每16个字节可以压缩成12个字节,那么132个字节可以储存原来的176个字节,剩下的2个字节还能保存1个汉字,一共是89个汉字。

根据JYW汉字编码的特点,常用字符的高位定义在0x80~0x8F之间,压缩时可以去掉前面4位,即高位先减去0x80,然后将剩下的12位进行编码。
而非常用汉字的高位定义在0x90~0xEF之间,压缩是可以去掉前面1位,即最高位先进行和0x7F的与运算,然后将剩下的15位进行编码。

所以全部汉字都是常用字的短信,一条可以发送88个汉字;包含有至少一个非常用字的短信,一条可以发送70个汉字。

但是这种格式的缺点是:短信内容区域的编码其实是256进制的,在普通短信软件显示时可能是一团乱码,视觉效果极差。


2、94进制格式(第二个字符为J,压缩长度大于0):

使用94进制数进行重新编码,则短信内容全部显示为英文字母、数字、其他符号,即使是在普通短信软件显示时,显示效果也是极佳,不会乱码。
当使用134个字节存储94进制数时,这个数据范围用来代表256进制的数,最多只能是109个字节了,那么这样的空间能保存多少个汉字呢?

如果使用15位压缩规则,每16个字节压缩成15个字节,那么105个字节可以储存原来的112个字节,剩下的4个字节还能保存2个汉字,一共是58个汉字。
如果使用12位压缩规则,每16个字节压缩成12个字节,那么108个字节可以储存原来的144个字节,剩下的1个字节不用,一共是72个汉字。

所以全部汉字都是常用字的短信,一条可以发送72个汉字;包含有至少一个非常用字的短信,一条可以发送58个汉字。


3、加密下的94进制格式(第二个字符为Y或W):

为了短信内容更加隐秘,需要引入高强度的加密处理。为了确保加密后短信的不容易被破解,一条短信存放的内容不宜太多。
对于全部使用常用字的短信,一次发送60个汉字为宜;对于包含有非常用字的短信,一条发送50个汉字为宜。
加密的强度越大,一次发送的短信字数越少,信息就越安全,破解难度就更大。

锦衣卫密信采取浅度128位、深度1024位的RSA非对称加密方式,先用发送方的私钥和接收方的公钥进行加密,后用接收方的私钥和发送方的公钥进行解密。关于加密的具体方法,后面会有叙述 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值