复制代码
1
前段时间,公司要求对C代码的Milenage算法进行java版本的迁移,拿到源代码的时候,心想只要核心那还有什么不好办啊?可现实是残酷的。。
先熟悉流程:
3
之后做了许多尝试:
1、包括c语言中的char和java中的char是不一样的。
2、C++中还就没有byte类型,java中就有。
3、重温了很多进制转换的问题,2进制转换16进制的字符串等等
最后还是上一些源代码,其中包括GUI版本的Milenage的生成,还有官方3GPP TS 35.206 的文档,也是对这个算法的一个小总结。
后面如果还有机会,想琢磨一些对Milenage算法的破解,毕竟。。。你懂的~
源码下载:请猛戳这里
------------------------------------------------------------------------------------------------------------------------
今日做了一个小优化,主要是针对每次调用getOP()方法的时候,都要读取配置文件,采取的解决方法是在构造方法里加入,这样spring在启动的时候就会加载默认的构造方法
复制代码
1
2
3
4String op_properties=""; public RPSGeneratorImpl() { this.op_properties=genOP(); }
之后的调用改为:
复制代码
1
2
3
4
5
6@Override public String getOPC() { byte[] s = genK(); byte op_c[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; byte[] op = hexStr2Byte(op_properties);//原来是 hexStr2Byte(getOP())
最后,如果你不用spring,也可以这样修改,毕竟读取配置文件是很占资源的。
最后
以上就是炙热仙人掌最近收集整理的关于Milenage算法的改写(c,c++变成java)的全部内容,更多相关Milenage算法内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复