改写某个模拟器的go语言源码遇到的问题
来源:互联网 发布:nginx一键安装脚本 编辑:程序博客网 时间:2024/06/05 16:19
快速看了一下go语言源码,整体就是一个http服务器,响应对应的结果
源码的某个值用到了RSA加密,RSA用的RSAwithMD5,返回用的不是base64而是bintohex
Go->Java
1.Go语言用到的私钥是ASN格式(PCKS#1格式),Java没有对应的方法直接使用
Java原生只能用PCKS#8的
解决方法:
使用openssl转换
openssl pkcs8 -topk8 -inform PEM -in private.key -outform pem -nocrypt -out pkcs8.pem
在线转换
http://tool.chacuo.net/cryptrsapkcs1pkcs8
使用第三方库
org.bouncycastle.asn1
2.需要响应不同的http请求
使用jetty嵌入,手动判断url
3.多出的换行符0x0a导致校验失败
response.getWriter().println(body);改成response.getWriter().print(body);
Go->Python
1.找python3中好用的加密库
一开始找到了pycrypto,后来发现这玩意在windows下安装简直是巨坑,转用rsa库感觉好多了
2.需要响应不同的http请求
手写实现太复杂,直接用了flask框架感觉还不错
Go->PHP
1.找php的RSA加密方法
总体来说比较简单,由于用到的是rsawithMD5,所以需要加OPENSSL_ALGO_MD5参数
2.响应action后缀的请求
一开始也想像Java和Python一样,上个web框架(如:laraval),后来发现有两个问题
框架太重,响应不多
laraval框架在军哥的lnmp的一键安装包下坑太多,比如下面这个
http://blog.csdn.net/dahuzix/article/details/73197718
后来决定改用nginx下的后缀改写实现
配置如下
location ~ /rpc/
{
rewrite ^(.*)\.action $1.php;
}
3.多出的空格符0x20导致校验失败
这个很隐蔽,我们常见的php文件源码如下
<?php
echo "Hello!";
?>
我们在文件结尾的?>后面加俩空格(部分ide喜欢干这种事情)
<?php
echo "Hello!";
?>
然后服务器响应的结果就会带空格,这个空格在浏览器的html中根本看不出来,java好歹还能在html中看到有个空行在那里
最终通过wireshark抓包提取tcp数据发现有这个问题,删掉?>之后的空格正常了。
解决过程参考了下面这个
http://bbs.csdn.net/topics/110006809
update2017-11-27:php的结尾字符?>完全可以不写,不写可以防止多输出多余字符引发的各种问题
阅读全文
0 0
- 改写某个模拟器的go语言源码遇到的问题
- go语言 最近遇到的问题总结
- go遇到的问题
- 猜数字,struts2改写遇到的问题。
- Go语言调用c动态库遇到的一些问题
- merge改写sql遇到的等效性问题
- go 0x30008000之后遇到的问题
- go开发中遇到的问题
- 开发过程中遇到模拟器的问题
- 安装gemotion模拟器遇到的问题
- 连接夜神模拟器遇到的问题
- eclipse用安卓模拟器遇到的一个问题
- 第一次获取github上go语言编写的一个项目遇到问题的处理
- Go语言 几个亟待解决的Go语言问题
- go 遇到的坑
- 编译源码遇到的问题
- go语言有关结构体的问题
- Go 语言编译运行的小问题
- 关于Android Service真正的完全详解,你需要知道的一切
- 算法分析基础---渐进复杂度
- iOS开发 解决pods-frameworks.sh:permission denied问题
- layui使用
- hdu1072 Nightmare
- 改写某个模拟器的go语言源码遇到的问题
- 坚果云与Git
- springmvc与mybatis整合中的问题
- bzoj 2648: SJY摆棋子(kd tree)
- 51nod 1222 最小公倍数计数
- 小数据的处理
- Ubuntu使用docker安装redmine
- $.each(srcData, function(i, oneData){});
- php require