有关AES的CBC模式加解密安全漏洞的实践

(1)CBC模式的原理 这种模式是先将明文切分成若干小段,然后每一小段与初始块(IV向量)或者上一段的密文段进行异或运算后,再与密钥进行加密,第一个数据块进行加密之前需要用初始化向量IV进行异或操作。 (此图和以上原理参考于网络)(2)漏洞复现鄙人在实际开发API服务中用到了cbc模式的加密算法,但测试过程中却发现了此算法有安全漏洞,而且比较容易复现!下面是用于复现的测试代码: cbc.go(填充模式PKCS5和PKCS7都适用)package cbc import ( "bytes" "cry...阅读全文

Segmentfault 2020-09-25 12:32:33 simamengde

MacOS Go开发环境配置

MacOS Go开发环境配置Homebrew安装Homebrew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"脚本很可能会停在==> Tapping homebrew/core Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...具体的解决方法可以参考:h...阅读全文

Segmentfault 2020-09-24 14:32:35 Willem97

golang 云耀云服务器上cloudshell中log日志不能正常输出问题

1.使用golang布置在华为云的云耀云服务器上时,使用线上的cloudshell远程登录,无法看到正常的log日志输出(就是没有打印),使用了日志包输出logrus才看到,浪费了很多时间,至于为什么,也不清楚,估计是服务器的功能问题吧阅读全文

简书 2020-09-21 10:32:40 哆啦在这A梦在哪

Go发起HTTP2.0请求流程分析(后篇)——标头压缩

来自公众号:新世界杂货铺 阅读建议 这是HTTP2.0系列的最后一篇,笔者推荐阅读顺序如下: Go中的HTTP请求之——HTTP1.1请求流程分析 Go发起HTTP2.0请求流程分析(前篇) Go发起HTTP2.0请求流程分析(中篇)——数据帧&流控制 回顾 在前篇(*http2ClientConn).roundTrip方法中提到了写入请求header,而在写入请求header之前需要先编码(源码见https://github.com/golang/go/blob/master/src/net/...阅读全文

简书 2020-09-21 10:32:40 新世界杂货铺

golang泛型前瞻

9月更新了golang设计草稿中的泛型语法 这里可以在线编译 如下 func Print[T any](s []T) { for _, v := range s { fmt.Print(v) } } 这是一个泛型的Print函数 循环打印泛型切片中的元素 any any是一种特殊的interface 在我的理解中 any可以看做包含基本类型在内的所有类型 除any外可以声明任意一个包括多种基本类型的interface 如 type Ordered interface{ type int, int...阅读全文

简书 2020-09-21 00:32:39 nil_ddea

【Windows系统】基于vscode搭建go语言开发环境

微信公众号:CurryCoder的程序人生 怕什么真理无穷,进一寸有一寸的欢喜 image 1.golang安装包下载与安装 关于vscode的下载,请参见历史文章Ubuntu16.04下搭建vscode的C++开发环境,本文就不再赘述啦~下面直接下载golang安装包,下载地址放文章的最后部分了。打开链接后,我们可以看到go语言的吉祥物一只可爱的小地鼠。 image 点击“Download Go”按钮即可进入下载页面,选择对应操作系统的安装包。注:本文是以Windonws系统为例,Go语言的安...阅读全文

简书 2020-09-20 23:32:41 CurryCoder

Go IP 段范围校验

友情提示:此篇文章大约需要阅读 3分钟21秒,不足之处请多指教,感谢你的阅读。 订阅本站背景近期做了一个需求,是检测某个 IP 是否在若干 IP 段内,做固定地点 IP 筛查,满足特定业务需求。解决方案PLAN A 点分十进制范围区分简单来讲,就是将 IPv4 原有的四段,分别对比 IP 地址,查看每一段是否在 IP 段范围内,可以用于段控制在每一个特定段 0 ~ 255 内筛选,例如:192.123.1.0 ~ 192.123.156.255 这样的比较规范的特定段可以实现简单的筛选,但是问题...阅读全文

Segmentfault 2020-09-24 07:32:32 Meng小羽

慎用time.After会造成内存泄漏(golang)

前言嗨,大家好,我是asong,我今天又来了。昨天发表了一篇文章:手把手教姐姐写消息队列,其中一段代码被细心的读者发现了有内存泄漏的危险,确实是这样,自己没有注意到这方面,追求完美的我,马上进行了排查并更改了这个bug。现在我就把这个bug分享一下,避免小伙伴们后续踩坑。测试代码已经放到了github:https://github.com/asong2020/...欢迎star~~~背景我先贴一下会发生内存泄漏的代码段,根据代码可以更好的进行讲解:func (b *BrokerImpl) bro...阅读全文

Segmentfault 2020-09-23 12:32:32 asong

go解锁设计模式之单例模式(有个小坑要注意一下啊)

前言哈喽,大家好,我是asong,这是我的第16篇原创文章,感谢各位的关注。今天给大家分享设计模式之单例模式,并使用go语言实现。熟悉java的同学对单例模式一定不陌生,单例模式,是一种很常见的软件设计模式,在他的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。下面我们就一起来看一看怎么使用go实现单例模式,这里有一个小坑,一定要注意一下,结尾告诉你哦~~~什么是单例模式单例模式确保某一个类只有一个...阅读全文

Segmentfault 2020-09-23 10:32:33 asong

ARTS 第19周 | LeetCode 51 N皇后问题 | 如何避免软件系统的过度设计

ARTSARTS 是陈浩(网名左耳朵耗子)在极客时间专栏里发起的一个活动,目的是通过分享的方式来坚持学习。每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。本周内容这周的 ARTS 你将看到:N皇后网网红题.什么是软件系统过度设计?Algorithm本周的算法题是网红面试题 N皇后问题: LeetCode 51 N-Queens.这是一道非常经典的使用 回溯 + 剪支 的搜索类题...阅读全文

Segmentfault 2020-09-23 09:32:31 澎湃哥

王者荣耀背后的实时大数据平台用了什么黑科技?

大家好我是许振文,今天分享的主题是《基于 Flink+ServiceMesh 的腾讯游戏大数据服务应用实践》,内容主要分为以下四个部分: 背景和解决框架介绍 实时大数据计算 OneData 数据接口服务 OneFun 微服务化& ServiceMesh 一、背景和解决框架介绍 1、离线数据运营和实时数据运营 首先介绍下背景,我们做游戏数据运营的时间是比较久的了,在 13 年的时候就已经在做游戏离线数据分析,并且能把数据运用到游戏的运营活动中去。 但那时候的数据有一个缺陷,就是大部分都是离线数据,...阅读全文

简书 2020-09-20 19:32:52 Flink中文社区

golang大Excel文件(.xlsx)分割成多个指定大小条数的Excel文件的方法附源码

今天一个朋友由于要将本地excel数据导入到saas平台,但是saas平台规定了excel大小条数,并且要求按规定格式命名excel文件。刚好闲来无事,便花了点时间用golang写了个excel文件分割处理程序。 操作步骤 下载excel分割器.zip,解压,将需要分割的文件重命名为input.xlsx后台,放在根目录下,双击运行exe文件,即可在output目录生成分割好的excel文件列表了。 源码下载 github 处理逻辑 核心处理逻辑代码如下: package main import ...阅读全文

简书 2020-09-20 17:32:39 Fesion

[go语言]-深入理解singleflight

[toc] Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 前言 最近从java转到go,来公司第一个开发工作就是对一个资源请求去重复,最终发现这个singleflight这个好东西,分享一下。 singleflight使用场景 缓存击穿:缓存在某个时间点过期的时候,恰好在这个时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时...阅读全文

简书 2020-09-20 11:32:40 Yangsc_o

go runtime debug 小技巧

来自公众号:新世界杂货铺前言本意是打算研究一下go程序的启动流程,然后就去网上搜索了一下入门教程。结果令我有点沮丧,搜到的几乎所有文章开篇都是通过GDB调试, 然后就是不同平台下的汇编代码。。。这令我很不开心, 虽然C/C++应用很广泛, 但是我对它真的没啥兴趣啊, 对它相关的调试工具就更加不感冒了, 虽然它可以调试go程序, 但是总感觉心里少了点什么, 难道dlv它不香嘛, 于是就有了今天这篇文章dlv命令行debugdlv的名头应该不用我多说, 所以我们直奔主题开始debugdlv debu...阅读全文

Segmentfault 2020-09-22 10:32:34 新世界杂货铺

libevwork 轻量级C++网络引擎库

你有没有觉得使用C++写网络程序比较困难,不像用Java随手就有Spring框架可用,或者如golang内置的基建库那般完善。没错,C++就是面向操作系统的,它就是这么任性,一切高级的东西要么你自己去封装,要么复用别人的封装。本文给大家推荐一款比较轻量级的C++网络引擎库,它基于轻量级的libev事件库,实现了开发常见网络服务程序的方方面面,并且还附带了几个例程,请大家移步到GitHub上去阅读,地址:https://github.com/kdjie/libevwork/阅读全文

简书 2020-09-20 10:32:38 大匡先生

为什么程序员都不喜欢使用 switch ,而是大量的 if……else if ?

来源:3g.163.com/tech/article/E02RDE6C0511SDDL.html 缺点一. 语法正确,逻辑错误 缺点二 .死板的语法 缺点三 .需要子函数来处理分支 switch 的 优点 请用5秒钟的时间查看下面的代码是否存在bug。 image OK,熟练的程序猿应该已经发现Bug所在了,在第8行和第10行下面我没有添加关键字break; 这就导致这段代码的行为逻辑与我的设计初衷不符了。 缺点一. 语法正确,逻辑错误 这就是第一个理由为什么程序猿很少使用switch来做条件判...阅读全文

简书 2020-09-20 02:32:40 码农小光

为什么要使用Golang以及如何入门

什么是golang? Go是一种开放源代码的编程语言,于2009年首次发布,由Google的Rob Pike,Robert Griesemer和Ken Thompson开发。基于C的语法,它进行了一些更改和改进,以安全地管理内存使用,管理对象,并提供并发静态或严格的键入。 Go的创建目标是: 使用简单,同时提高生产率 提供高水平的代码效率 企业的高级绩效。 许多著名的公司已经采用了Golang,包括Google,Apple,Facebook和BBC。为了弄清楚为什么应该使用Golang,我们要利...阅读全文

简书 2020-09-20 00:32:37 追梦人在路上不断追寻