支持HTTP,SOCKS5加密代理

helloh2o · · 274 次点击 · 开始浏览    置顶
### 前言 命名-hoz, 这个代理只是为了加深学习对TCP/IP,HTTP,SOCKS等编程的理解。放到网上也是想有个开源项目,仅供学习交流,平时自己的集成环境也方便用代理访问库文件。**切勿用于其他违法商业用途** :bomb: ### 主要代码 HTTP和SOCKS协议,这里就不说了,网上也用很多的详解。这里介绍下是怎么包装数据的, 用的或与运算,简单高效 ```go type OORR struct { password []byte index int remainder []byte } func NewOor(key []byte) *OORR { or := new(OORR) or.password = key or.index = len(key) - 1 if or.index > 0 { for i := 0; i < 32*1024; i++ { or.remainder = append(or.remainder, or.password[i%or.index]) } } return or } func (or *OORR) Encrypt(src []byte) ([]byte, error) { length := len(src) for i, b := range src { if or.index > 0 { src[i] = b ^ byte(i) ^ or.remainder[i] } else { src[i] = b ^ byte(i) } } head := make([]byte, 4) binary.BigEndian.PutUint32(head, uint32(length)) data := src[:0] data = append(head, src...) return data, nil } func (or *OORR) Decrypt(src []byte) ([]byte, error) { for i, b := range src { if or.index > 0 { src[i] = b ^ byte(i) ^ or.remainder[i] } else { src[i] = b ^ byte(i) } } return src, nil } ``` #### 加密扩展 如果需要自己实现加解密,可以实现这三个接口,参考cipher/oor.go,然后再server.go 添加你的加密解密实现。 *1.0.4 版本支持oor, salsa20, ase* ```go pkg.PackageReader pkg.PackageWriter cipher.Cipher ``` #### 亲测好用 >实际测试情况,1g1核的机子,一直看高清视频的情况下,CPU占用在0.5%上下,内存在1%,播放4K视频时,CPU大一些,内存变化不大。轻快,好用。换个说法就是,你只需要购一台1核心和128M内存及以上的机子就可以愉快的玩耍了。需要的拿走,记得star哦!<br>**本代码仅供学习交流测试使用** ![image.png](https://static.studygolang.com/190911/690ac345f312a8b58b1b8cc61f26e699.png) #### 学习总结 懂的越多,不懂的就越多 #### Github 代码 >><u>[A light weight fast HTTP & SOCKS5 Proxy](https://github.com/helloh2o/hoz "hoz")</u><br>

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

274 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传