【VOS】SIP软电话对接VOS服务器之RC4加密对接

RC4加密

RC4是一种对称密码算法,它属于对称密码算法中的序列密码(streamcipher,也称为流密码),它是可变密钥长度,面向字节操作的流密码。可以加密和解密,同一个key。

VOS加密

Vos服务器已公开其加密规范,有两个版本,目前均可用,下载地址如下:
VOS加密规范(V1.1) :支持SIP,H323,及RTP协议的加密,加密方式仅支持RC4
VOS加密规范(V2.0):仅支持SIP协议加密,但加密方式支持的更多。

实现方式

在发送SIP消息之前进行加密,在接收SIP消息之后进行解密,这样即可快速简洁的做到版本的兼容。
1.RC4加密方法:

void rc4_init(unsigned char *s, unsigned char *key, unsigned long Len) 
{
    int i =0, j = 0;
    char k[256] = {0};
    unsigned char tmp = 0;
    for (i=0;i<256;i++) {
        s[i] = i;
        k[i] = key[i%Len];
    }
    for (i=0; i<256; i++) {
        j=(j+s[i]+k[i])%256;
        tmp = s[i];
        s[i] = s[j]; 
        s[j] = tmp;
    }
 }

void rc4_crypt(unsigned char *s, unsigned char *Data, unsigned long Len) 
{
    int i = 0, j = 0, t = 0;
    unsigned long k = 0;
    unsigned char tmp;
    for(k=0;k1)%256;
        j=(j+s[i])%256;
        tmp = s[i];
        s[i] = s[j]; 
        s[j] = tmp;
        t=(s[i]+s[j])%256;
        Data[k] ^= s[t];
     }
} 

2.使用方法

rc4_init
rc4_crypt

因为使用的是异或操作,所以加密运行一次上面的方法,再运行一次上面方法即对其解密。

3.VOS规范头部构建
除加密后的SIP消息之外的头部包含两部分,一是消息头部,二是消息体的头部。
消息头部如下图,长度为8个字节,前6个保持如图所示不变,后2个为消息体的长度,如实计算填写即可:
【VOS】SIP软电话对接VOS服务器之RC4加密对接_第1张图片

消息体头部如下图,长度可变,第一个字节为00不变,第二个为分机号长度,可变,剩余字节为分机号:
【VOS】SIP软电话对接VOS服务器之RC4加密对接_第2张图片
如图剩余部分的为加密后的SIP消息内容。

4.加密发送,接收解密
加密解密部分的头部构建是一致的,解密时使用同一个KEY解密接口,KEY为分机号的密码。

PS:有问题可随时交流,个人网站:www.vvsip.com,QQ:272108638

你可能感兴趣的:(VOIP,VOS,SIP,加密,VOIP,RC4)