之前由于项目要求,需要在Windows Phone端加密数据发到PC平台的服务端,然后在服务端解密,加密算法选用TripleDES。
由于Windows Phone 7里自带的加解密库移除了对于TripleDES的支持,于是上网搜索解决方案,网上有几个国外开发者自己使用C#编写的TripleDES实现,试用了一下,这里的代码比较合适:https://gist.github.com/amrishodiq/1622737
经过修改我将加密后的数据转换成16进制字符串表示,并且在明文长度不足8的整数倍时在末尾添加空格来加密,在解密时去掉末尾的空格,当然也可以改为其他交互中不会出现的数据,TripleDES加解密使用24字节的Key。
PC平台使用的加解密代码从libgcrypt中裁剪,支持Windows/Linux,经测试编译到ARM Linux下也没有问题,作为扩展函数移植到PHP中也可以,不过我修改的代码部分难免会有Bug^_^
在使用时要确保Windows Phone和PC平台代码中使用的key是一致的。
PC平台的代码可以从这里下载:http://download.csdn.net/detail/chenxupro/6491431
Windows Phone平台的代码从这里下载:http://download.csdn.net/detail/chenxupro/6491659
Windows Phone上加解密效果如下:
PC平台上加解密效果如下: