golang

AES 文件加密

在之前的一份工作中有型参与设计了一款由 React.JS + Electron.JS + Golang 开发的跨平台桌面应用,由于软件需求的特殊性,对数据安全由特殊的需求,虽然在最终实现的方式是使用 GPG 非对称加密的方式对数据加密,但是对于如何用对称加密的方式保证数据的安全也做了一些研究,而最近才有时间用 Golang 实现一个简单 golang library。 上文提到的桌面应用的设计可以看我之前写的一篇博客 缅甸大选中的安全桌面应用设计 加密与解密 通常我们使用 AES 进行数据加密的时候,使用一个 key 来加密一整个明文后得到密文。一般情况下如果我们不知道 key(密钥)是无法解除明文的,但是随着计算机的技术的发展以及 GPU

iOS Develope

Golang 开发跨平台SDK(iOS, Android),Part 2

上一篇简单的介绍了下Golang Mobile的工作原理,这一篇讲介绍如何使用Golang 做一个跨平台的RSS SDK。 RSS和HTTP     RSS是基于XML标准,在互联网上被广泛采用的内容包装和投递协议,主要用来描述和同步网站内容。既然RSS是一种网络协议,那我们就需要使用Golang的http模块了。整个流程可以归结为,RSS的SDK提供一个方法去请求RSS源获得数据,然后通过callback获得数据,而这些数据最好是Android/iOS都可以直接使用的model集合。     作为一个http请求在移动端最好是在子进程中执行,通过异步回调返回给主进程或UI 进程,这其中带来的明显好处就是我们的http任务不会阻塞整个UI,用户在请求RSS源获取最新网站内容的同时依然可以继续对应用进行操作。Golang 本身并没有提供一个异步执行http的库,但是我们可以利用Golang routine 简单的封装一个异步执行http的库。 func (t *Task) Runtask() { r := t.create(

iOS Develope

Golang 开发跨平台SDK(iOS, Android),Part 1

**前一篇**介绍了用React-Native做跨平台开发,其实Golang在1.5发布以后也是支持做移动端的跨平台开发的,Golang的移动端开发支持两种模式,一种是使用Golang开发整个应用,另外一种便是使用Golang开发common library。这两种各有优缺点,前者没有完善的UI库,如用来开发一个完整的应用需要的工作量着实有点不小,或者用来开发游戏可能也是一个不错的选择,亦或者寄望于Google可以开发出完善的UI库,至于后者想对于前者就方便多了,Google的GoMobile项目已经完善了大部分的工作,现在的缺点就是支持的数据类型还是远远不够,而且现只支持ARM架构。所以现阶段二者都还有些限制,但是作为一个跨平台的备选方案还是有其可取之处的。 How it works 在Google GoMobile的项目里Google提供了一个工具gobind,gobind可以生成对于Java和Objective-C的bindings。下面是一段Golang代码 package mypkg type Counter struct { Value int

windows

一个简单的问题

最近一直忙于缅甸大选的投票系统,做Windows客户端给缅甸的人民用。由于种种原因我们用SQLCipher做客户端的数据库,Golang做中间的数据层。 我们的SQLCipher的Golang驱动是通过SQLCipher和SQLite驱动修改来的,中间用了很多cgo的混合编码,其中就有著名的加密库OpenSSL。 编译好的exe文件直接执行的话会报missing libeay32.dll的错误。 之前我们的做法是把编译后的libeay.ddl放到系统目录C:/windows/system32文件下,这个文件下的所有dll文件都是可以被任何应用共享的,问题自然就解决了。但是有一个问题是需要管理员确认才能将文件复制到该目录,所以我们就需要一个window installer去复制文件,其中还需要用户确认。现在我们的需求是解决这个问题,在这个项目之前我从来没有任何windows的经验,所有的经验都是以前用windows和google 来的。所以我搜索golang load dll go use static library等等,最后我才在这里找到了https://forum.