Go语言中文网 为您找到相关结果 133

Go和HTTPS

Go和HTTPS 四 30 bigwhite技术志 CA, CNNIC, Go, Golang, http, https, MD5, ngrok, openssl, SHA, SHA-1, SHA256, SSL, TLS, Web, 加密, 单项散列, 密钥, 微信, 摘要, 数字证书, 私钥, 签名 1 Comment 近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验。之前只是粗浅接触过HTTP(使用Golang开 发微信系列)。对HTTPS的了解则始于那次自行搭建ngrok服务,在那个过程中照猫画虎地为服务端生成了一些私钥和证书,虽然结果是好 的:ngrok服务成功搭建起来了,但对HTTPS、数字证书等的基本原理并未求甚解。于是想趁这次的机会,对...阅读全文

博文 2015-05-01 12:11:47 bigwhite

https原理以及golang基本实现

关于https 背景知识 密码学的一些基本知识 大致上分为两类,基于key的加密算法与不基于key的加密算法。现在的算法基本都是基于key的,key就以一串随机数数,更换了key之后,算法还可以继续使用。 基于key的加密算法又分为两类,对称加密和不对称加密,比如DES,AES那种的,通信双方一方用key加密之后,另一方用相同的key进行反向的运算就可以解密。 不对称加密比较著名的就是RSA,加密的时候有一个公钥和一个私钥,公钥是可以交给对方的,a给b发送信息,a用自己的私钥加密,b用a的公钥解密,反之,b给a发送信息,b用自己的私钥加密。 在通信之前,需要经过一些握手的过程,双方交换公钥,这个就是key exchange的过程,https最开始的阶段就包含了这个key exchange的过...阅读全文

博文 2015-07-12 03:00:00 Goden

Go大咖说第一期《比特币、区块链和Go开发》

个人介绍姜家志,2013 年开始接触比特币,之后开发了比太钱包,现在在比特大陆从事比特币相关的开发工作。引言大家好,我是姜家志首先感谢下谢大神的邀请,能有机会和大家进行交流,我是 2013 年开始接触比特币,当时花了很长时间在了解比特币原理和看比特币的源代码上。之后我们发现比特币没有好用的钱包,就开发了 "比太钱包"(bither), 比太钱包是中国人开发的唯一的一个上 bitcoin.org 的钱包,截图中就是比太钱包。另外的一个是 btc.com 钱包是我现在所在的公司开发的钱包,是由我们公司的欧洲团队开发的钱包。我从 2014 年开始接触 Go 语言,接触之后就深深的喜欢上了 Go, 之后就开始有计划地学习 Go 语言,自己做了几个 demo 性质的网站,主要是个人 blog、论坛、和...阅读全文

博文 2017-07-22 02:17:42 姜家志

Golang加密系列之RSA

Golang加密系列的最后一篇,嗯,RSA涉及的概念太多,弄了好久才搞清楚。。。 代码的结构如下图 PS:StarUML这玩意在Mac上所有连到Interface的线都变成直线了...我很惆怅... 定义一个对外开放的接口 package rsa import "crypto" type Cipher interface { Encrypt(plaintext []byte) ([]byte, error) Decrypt(ciphertext []byte) ([]byte, error) Sign(src []byte, hash crypto.Hash) ([]byte, error) Verify(src []byte, sign []byte, hash crypto.Hash) ...阅读全文

博文 2015-11-06 15:00:09 君子藏锋

用go语言模拟客户端对服务端发送get和post请求

client.go package main import ( // "bytes" "fmt" "io/ioutil" "net/http" "net/url" ) var client = &http.Client{} func Get() { //向服务端发送get请求 request, _ := http.NewRequest("GET", "http://192.168.1.35:9091/?publicKey=-----BEGIN+PUBLIC+KEY-----%0D%0AMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZsfv1qscqYdy4vY%2BP4e3cAtmv%0D%0AppXQcRvrF1cB4drkv0haU24Y7m5qYtT52...阅读全文

博文 2015-01-08 12:00:01 秦思_li

大型网站的HTTPS实践(一)---HTTPS协议和原理

1前言 百度已经于近日上线了全站HTTPS的安全搜索,默认会将HTTP请求跳转成HTTPS。本文重点介绍HTTPS协议,并简单介绍部署全站HTTPS的意义。 本文最早发表于百度运维部官方博客 2 HTTPS协议概述 HTTPS可以认为是HTTP + TLS。HTTP协议大家耳熟能详了,目前大部分WEB应用和网站都是使用HTTP协议传输的。 TLS是传输层加密协议,它的前身是SSL协议,最早由netscape公司于1995年发布,1999年经过IETF讨论和规范后,改名为TLS。如果没有特别说明,SSL和TLS说的都是同一个协议。 HTTP和TLS在协议层的位置以及TLS协议的组成如下图: TLS协议主要有五部分:应用数据层协议,握手协议,报警协议,加密消息确认协议,心跳协议。 TLS协议本身...阅读全文

博文 2015-05-04 11:26:58 luocn99

golang https

Go支持https协议的简单例子 我们知道除了http方式访问网页之外,还有一种加密的https方式。Go语言的net/http包中包含了这种https页面访问方式的支持。net/http包中的ListenAndServeTLS就是提供这个功能的。我们可以先看一下这个函数的原型。 func ListenAndServeTLS(addr string, certFile string, keyFile string, handler Handler) error 从上面的函数原型我们可以看出,其实和http方式的差别就在于需要提供一对公钥文件certFile和私钥文件keyFile。 我们在linux下面可以使用下面的命令来生成一对测试的公钥和私钥文件。 openssl genrsa -out...阅读全文

博文 2014-10-04 19:27:23 flyking

Go和HTTPS

自:http://tonybai.com/2015/04/30/go-and-https/ 近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验。之前只是粗浅接触过HTTP(使用Golang开 发微信系列)。对HTTPS的了解则始于那次自行搭建ngrok服务,在那个过程中照猫画虎地为服务端生成了一些私钥和证书,虽然结果是好 的:ngrok服务成功搭建起来了,但对HTTPS、数字证书等的基本原理并未求甚解。于是想趁这次的机会,对HTTPS做一些深度挖掘。主要途 径:翻阅网上资料、书籍,并利用golang编写一些实验examples。 一、HTTPS简介 日常生活中,我们上网用的最多的应用层协议就是HTTP协议了,直至目前全世界的网站中大多数依然只支持HTTP...阅读全文

博文 2015-06-02 04:00:05 sevenyuan

golang RSA加密解密程序

package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "errors" "fmt" ) // 加密 func RsaEncrypt(origData []byte) ([]byte, error) { block, _ := pem.Decode(publicKey) //将密钥解析成公钥实例 if block == nil { return nil, errors.New("public key error") } pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes) //解析pem.Decode()返回的Block指针实例 i...阅读全文

博文 2016-04-20 21:00:01 su_sai

使用golang进行证书签发和双向认证

前言 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。证书签发涉及到了非对称加密方面的知识,这里介绍使用golang中的x509标准库进行证书自签发,还有证书签发后如何使用golang进行双向认证. 自签发证书 生成根证书 根证书是CA认证中心给自己颁发的证书,是信任链的起始点.这里我们自己做CA使用openssl命令来生成根证书. 首先生成私钥 openssl genrsa -out key.pem 2048 然后根据私钥提取公钥 openssl rsa -in key.pem -pubout -out key.pub 开始生成X509格式的自签名证书,会要求输入区别名DN的各项信息(国家,城市,组织,姓名,email等. penssl req -x509 ...阅读全文

博文 2017-06-05 15:06:14 pinecone

Go支持https协议的简单例子

我们知道除了http方式访问网页之外,还有一种加密的https方式。Go语言的net/http包中包含了这种https页面访问方式的支持。net/http包中的ListenAndServeTLS就是提供这个功能的。我们可以先看一下这个函数的原型。 func ListenAndServeTLS(addr string, certFile string, keyFile string, handler Handler) error 从上面的函数原型我们可以看出,其实和http方式的差别就在于需要提供一对公钥文件certFile和私钥文件keyFile。 我们在linux下面可以使用下面的命令来生成一对测试的公钥和私钥文件。 openssl genrsa -out key.pem 2048 ope...阅读全文

博文 2016-03-03 15:00:03 aqiang912

golang 生成RSA公钥和私钥文件

package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "os" ) func main() { //rsa 密钥文件产生 GenRsaKey(1024) } //RSA公钥私钥产生 func GenRsaKey(bits int) error { // 生成私钥文件 privateKey, err := rsa.GenerateKey(rand.Reader, bits) if err != nil { return err } derStream := x509.MarshalPKCS1PrivateKey(privateKey) block := &pem.Block{ Type: "R...阅读全文

博文 2016-04-29 20:00:01 su_sai

Go和HTTPS

自 tony bai 近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验。之前只是粗浅接触过HTTP(使用Golang开 发微信系列)。对HTTPS的了解则始于那次自行搭建ngrok服务,在那个过程中照猫画虎地为服务端生成了一些私钥和证书,虽然结果是好 的:ngrok服务成功搭建起来了,但对HTTPS、数字证书等的基本原理并未求甚解。于是想趁这次的机会,对HTTPS做一些深度挖掘。主要途 径:翻阅网上资料、书籍,并利用golang编写一些实验examples。 一、HTTPS简介 日常生活中,我们上网用的最多的应用层协议就是HTTP协议了,直至目前全世界的网站中大多数依然只支持HTTP访问。 使用Go创建一个HTTP Server十分Easy,十几行代码...阅读全文

博文 2017-01-20 13:00:03 andylau00j

golang rsa公钥私钥pem文件生成

func main() { //rsa 密钥文件产生 GenRsaKey(1024) } //RSA公钥私钥产生 func GenRsaKey(bits int) error { // 生成私钥文件 privateKey, err := rsa.GenerateKey(rand.Reader, bits) if err != nil { return err } derStream := x509.MarshalPKCS1PrivateKey(privateKey) block := &pem.Block{ Type: "RSA PRIVATE KEY", Bytes: derStream, } file, err := os.Create("private.pem") if err != ...阅读全文

博文 2015-06-17 20:23:37 zb_liang

JAVA与GO语言实现的RSA加密算法的互通

之前写过C#与JAVA语言RSA算法的互通程序,后来又找了找JAVA与GO语言互通的RSA算法,发现没有现成的,经过探索后,成功实现了两者的互通,现在分享如下: 注意:1 .两者的公钥和私钥是不能混用的,即JAVA的公私钥是不能直接用于GO的,反过来也不行。 2.下面的JAVA源码的解密思想是: (1)将java产生的公钥pubKey_from_java复制给Go (2)Go利用java的公钥加密一段信息,data,err=RsaEncrypt(" hello ",pubKey_from_java) (3)java利用自己的私钥privKey_from_java解密这段信息data,已验证通过。 3. Go源码解密的思想与上述同理,不再赘述。直接上源代码。 JAVA实现RSA的源码如下: p...阅读全文

博文 2016-03-08 14:00:01 igoqhb

golang中几种加密方式的处理

缘由 在与第三方平台进行接入的时候,通常会存在一些签名或者加密的处理,在进行开发的时候,因为语言的不同,需要按照规范进行相应处理。 DES加解密 DES:https://en.wikipedia.org/wiki/Data_Encryption_Standard golang中的标准库crypto/des中有DES的实现,但是golang库的描述比较简单,如果不熟悉DES的加密规则,是不容易进行相应代码编写的,与第三方进行不同语言之间的加密与解密时,也容易混淆,出现错误。 DES区分为CBC和EBC加密模式,并且有不同的填充方式。 CBC(等):https://en.wikipedia.org/wiki/Block_cipher_mode_of_operationPadding:https:...阅读全文

博文 2017-02-09 08:10:14 damon

[翻译]Go语言开发苹果推送通知

文在此:http://bravenewmethod.wordpress.com/2011/02/25/apple-push-notifications-with-go-language/ 前两天正巧看到 APNS 没有 Go 的实现,还在琢磨怎么实现一个试试,这下我又省心了。文章本身并不怎么出色,代码倒是有些用途。翻译这篇东西纯粹是为了给自己后面的工作留个资料。大家有用则用,无用就无视吧。 ————–翻译分割线————– Go语言开发苹果推送通知 我开始尝试学习并熟悉 Go 语言,并且做了一些普通的常识,例如,发送苹果推送通知(Apple Push Notifications)。这是我个人对一些开发环境的性能测试。迄今为止,已经有: 使用 Node.js 的推送通知(Push notific...阅读全文

博文 2014-10-09 16:15:11 mikespook

Go语言无法读取需要密码访问的PEM文件问题(failed to parse private key)

文来自:http://blog.csdn.net/hekejun19861107/article/details/22897429 最近开始做苹果的推送功能,服务端连接apns的时候需要加密连接,对应就需要通过苹果开发者平台生成对应的pns的证书和对应的私钥,然后通过openssl命令转换成PEM格式,本人也是急于完成手头的工作,没有去深入研究openssl命令的使用方法,按网上的教程直接把p12 的私钥转成了pem,对应还上了密码。这时候问题就来了,Go提供的tls库中的LoadX509KeyPair并没有传入密码的选项,只能传入对应的证书和私钥。琢磨半天找到这方法,记录一下: golang 不支持p12解析,所以需要转换成pem 网上有一些,但都不能实现自动转换(非交互模式)。以下是非交...阅读全文

博文 2016-02-05 02:00:01 newsyoung1

关于RSA签名验签官网示例用openssl无法验证的问题

关于RSA签名验签官网示例用openssl无法验证的问题 我想用openssl签名,用Go验签,在网上搜到了源码页,但源码页的结果和我的无法对应,如下 源码页 https://golang.org/src/crypto/rsa/pkcs1v15_test.go 其中的签名和验证代码: ``` // These vectors have been tested with // `openssl rsautl -verify -inkey pk -in signature | hexdump -C` var signPKCS1v15Tests = []signPKCS1v15Test{ {"Test.\n", "a4f3fa6ea93bcdd0c57be020c1193e...阅读全文

golang 椭圆曲线加密使用ecdsa

非对称加密算法有RSA、ECDSA,对极大整数做因数分解的难度决定了RSA算法的可靠性,ECDSA为椭圆曲线加密算法,是基于椭圆方程公式,所以安全性要高于RSA。 这里说下使用ecdsa做签名和校验,并不讲原理; golang封装的ecdsa目前只有用私钥加密,公钥做校验,没有解密环节;所以目前可以应用于数字签名; 以下为封装: /** 通过一个随机key创建公钥和私钥 随机key至少为36位 */ func getEcdsaKey(randKey string) (*ecdsa.PrivateKey, ecdsa.PublicKey, error){ var err error var prk *ecdsa.PrivateKey var puk ecdsa.PublicKey var cu...阅读全文

公共云运维安全常见四大难题及解决方案

乘长假期间春光明媚,得空回顾了一下十年工作。 深以为,运维安全绝对是企业安全保障的基石。 看到这儿,有些程序猿不禁要问,哥们,你是不是写错了,应该是安全运维吧! 非也! 事实上,安全运维和运维安全是两个概念。 我的理解:安全运维是工程师对各种安全设备和软件进行运维保障系统安全,而运维安全相比之下是涵盖了整个云计算系统和安全有关的方方面面。本文主要探讨公共云环境下运维安全常见的难题及解决方案。 ![image002.jpg](http://studygolang.qiniudn.com/160216/a6de211d857d683e5c3f7848cfe83b87.jpg) 目前使用公共云的用户可以分为两类: 一是一开始业务就部署在公共云上面,主...阅读全文

基于 Web 的 Go 语言 IDE - Wide 1.5.2 发布!

这个版本由热心的开源贡献者加入了**韩语支持**,欢迎各位 gophers 加入到 Wide 的开源开发中。另外,这个版本还改进了 Playground,使其更稳定和易用。目前[黑客派社区](https://hacpai.com)已经支持嵌入 Wide,也欢迎其他广大技术社区进行接入(允许 src 使用来自于 https://wide.b3log.org 的 iframe 嵌入即可)。 ![Playground](https://cloud.githubusercontent.com/assets/873584/21209772/449ecfd2-c2b1-11e6-9aa6-a83477d9f269.gif) **如果你还没有 golang 入门,请访问我们汇编好的 [《Go ...阅读全文

大型网站的HTTPS实践(二)-- HTTPS对性能的影响

1 前言 HTTPS在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与此同时,HTTPS也会降低用户访问速度,增加网站服务器的计算资源消耗。 本文主要介绍https对用户体验的影响。 本文最早发表于百度运维部官方博客 2 HTTPS对访问速度的影响 在介绍速度优化策略之前,先来看下HTTPS对速度有什么影响。影响主要来自两方面: 1. 协议交互所增加的网络RTT(round trip time)。 2. 加解密相关的计算耗时。 下面分别介绍一下。 2.1 网络耗时增加 由于 HTTP和HTTPS都需要DNS解析,并且大部分情况下使用了DNS缓存,为了突出对比效果,忽略主域名的DNS解析时间。 用户使用HTTP协议访问http://www.baidu.com(或者www.baidu.c...阅读全文

博文 2015-05-04 11:27:08 luocn99

高私密性的消息通讯系统 Vuvuzela

Vuvuzela 是一个消息通讯系统。可以保护消息的内容和消息元数据的私密性。用户使用 Vuvuzela 不会暴露他和谁进行通讯,即使是遭遇到强大的国家机构的时候。 [SOSP 2015 paper](https://davidlazar.org/papers/vuvuzela.pdf) 解释了这个系统,它的 threat 模型,性能,限制等等。[SOSP 2015 slides](https://davidlazar.org/slides/vuvuzela-sosp2015.pdf) 用图形介绍了这个系统。 Vuvuzela 是第一个在百万用户规模下,提供强大的元数据私密性的系统。之前的系统使用 Tor (例如 [Pond](https://pond.imperialviolet.org...阅读全文

【go语言】RSA加解密

关于go语言的RSA加解密的介绍,这里有一篇文章,已经介绍的很完整了。 对应的go语言的加解密代码,参考git。 因为原文跨语言是跟php,我这里要跟c语言进行交互,所以,这里贴上c语言的例子。 参考原文:http://hayageek.com/rsa-encryption-decryption-openssl-c/ #include #include #include #include #include #include #include #include 阅读全文

博文 2016-08-16 04:00:01 zhangqingping

用gRPC实现一个系统(3):安全通信

在前一篇文章中,我们使用gRPC从零开始定义了一个服务。在这篇文章中,我们更近一步,在这个服务中添加TLS特性。 1. 制作证书 客户端和服务器通过gRPC相互通信,由于我们使用了protobuf来序列化和反序列化消息,因此消息的数据是二进制形式的。但是我们的通信是明文传输的,这在一些安全需求较高的场景中是不允许的,因此需要使用安全传输。幸好,在gRPC中,我们可以直接使用SSL/TLS,用来验证服务器,并对通信过程进行加密。 首先,需要生成证书。 1.1 生成私钥 在我们的simplemath项目目录中新建目录cert,进入这个目录,执行下面的命令来生成私钥: $ openssl genrsa -out server.key 2048 我们使用openssl genrsa命令来生成私钥,并...阅读全文

博文 2018-09-25 20:34:44 今天中午吃啥

HD钱包学习小结

在比特币/以太坊等公链上都会用到钱包。钱包主要用来管理用户的私钥,及用户在链上的数字货币,即用私钥对交易进行签名。私钥可用于生成特定消息的签名,此签名可以在不泄露私钥的情况下使用公钥进行验证。 因为私钥极其重要,一旦泄漏就意味着数字资产的所有权就掌握在别人手里。理论上私钥可以是任意的一串随机数字串,不仅难以记忆也没有规律可循,有必要利用一些密码学方法来管理秘钥对(一个秘钥对包括一个私钥和对应的公钥),既方便管理又足够安全。 1. 非确定性钱包 如果只是完全随机生成一个数字串作为私钥,可以使用密码学安全的伪随机数生成器(CSPRNG,Cryptographically secure pseudorandom number generator,密码学安全伪随机数生成器)。这些私钥之间完全独立,相...阅读全文

博文 2018-07-29 11:34:55 shi_qinfeng

比特币钱包GoWallet

比特币脑钱包。使用一个秘钥和盐值综合加密生成分层确定性比特币钱包,基于 BIP32,BIP44 和 BIP38 协议,使用 Go 语言开发。 ![image](https://raw.githubusercontent.com/aiportal/gowallet/master/_doc/account.png) ![image](https://raw.githubusercontent.com/aiportal/gowallet/master/_doc/encryption.png) 您可以使用命令行导出散装钱包。 -n或-number uint 生成的钱包数量 -v或-vanity字符串 找到虚荣钱包地址匹配。 (字首) -e或-export字符串 以WIF格式...阅读全文

开源项目 2017-09-14 08:00:02 网友

Wide 教程:基于 Web 的 Go 语言 IDE

Wide 是一个基于 Web 的 Go 语言 IDE, 其目标不是彻底代替本地 IDE,而是做本地 IDE 很难做到的事情: 分享代码:类似 playground,但支持多文件并提供嵌入方式,在其他网站(比如技术社区帖子)展现、运行代码团队协同:比如标记代码 issue 并通知、编辑状态显示,这个特性很类似一些即时战略游戏中的玩家协作,这里是 特性设计:英雄模式随时随地:不用装环境(或者说不用经常升级吧),能联网就能开发。当然,也可以本地跑 Wide支持移动设备,即使不支持开发(或者是支持的体验很差),但是可以运行,可以浏览代码 易于和其他系统进行集成、扩展(勤快学基础教程QKXue.NET) 大家可以使用我们提供的 Wide 在线服务(腾云科技TY300.COM),也可以自行下载并在本地环...阅读全文

博文 2016-08-31 18:00:02 cainiaojiaocheng

Golang创建最简单的HTTP和HTTPS服务

Golang可以用很短的代码实现HTTP和HTTPS服务 HTTP服务 HTTP是基于传输层TCP协议的。 package main import ( "net/http" "fmt" "log" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){ fmt.Fprint(w, "Hello world") }) log.Fatal(http.ListenAndServe(":5001", nil)) } HTTPS服务 HTTPS服务不同于HTTP服务,HTTPS是HTTP over SSL或HTTP over TLS。 SSL是“Secure Sockets Layer”的缩写...阅读全文

博文 2018-09-20 16:34:43 肥羊

Go 语言实现的应用安全网关Janusec Application Gateway

Janusec应用网关(Janusec Application Gateway)一款基于Golang打造的应用安全网关,具备WAF(Web应用防火墙)功能及组合策略配置,天然支持HTTPS(符合PCI-DSS认证要求),无需Agent,私钥加密存储在数据库,提供负载均衡和统一的Web化管理入口。 ![Janusec Application Gateway](https://camo.githubusercontent.com/292d1c91acf55a2572fdfdf91a287c4f1eb1afa4/68747470733a2f2f7777772e6a616e757365632e636f6d2f696d616765732f67617465776179312e706e67) Janu...阅读全文

开源项目 2018-07-30 12:30:01 网友

RSA加密解密(无数据大小限制,php、go、java互通实现)

RSA加解密中必须考虑到的密钥长度、明文长度和密文长度问题。明文长度需要小于密钥长度,而密文长度则等于密钥长度。因此当加密内容长度大于密钥长度时,有效的RSA加解密就需要对内容进行分段。 这是因为,RSA算法本身要求加密内容也就是明文长度m必须0阅读全文

博文 2017-09-19 12:34:49 inspii

在比特币上表白-使用Golang将誓言存在比特币的区块链上

大家先看一个区域链浏览器的交易链接: https://www.blocktrail.com/tBCC/tx/a63edbbfa17e45b0890520ca30fce6d8eacd41635d1c447418fcfedffa14d914 打开这个链接, 滑到最后, 会看如图所示的文字 这是怎么做到的? 这是一个比特币的交易, 怎么能附上中文呢? 本文就一步步教 你怎么在比特币交易上添加文字. 因为比特币的交易具有不可篡改性, 且永久存在区域链上, 那么其附带的文字就有这个属性, 这就好像是一个誓言! 誓言记存, 多有意义!! 第一步: 买一定的比特币 比特币交易是需要手续费的, 而当前的手续费并不便宜, 动则至少上百元, 这太贵了. 所以我推荐大家先去比特币测试网络先弄一些币来测试. 怎么在...阅读全文

博文 2018-01-29 15:33:04 lifephp

Go and HTTPS

自:http://tonybai.com/2015/04/30/go-and-https/ 近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验。之前只是粗浅接触过HTTP(使用Golang开 发微信系列)。对HTTPS的了解则始于那次自行搭建ngrok服务,在那个过程中照猫画虎地为服务端生成了一些私钥和证书,虽然结果是好 的:ngrok服务成功搭建起来了,但对HTTPS、数字证书等的基本原理并未求甚解。于是想趁这次的机会,对HTTPS做一些深度挖掘。主要途 径:翻阅网上资料、书籍,并利用golang编写一些实验examples。 一、HTTPS简介 日常生活中,我们上网用的最多的应用层协议就是HTTP协议了,直至目前全世界的网站中大多数依然只支持HTTP...阅读全文

博文 2016-03-31 20:00:00 BlueSy2008

专访:听道哥聊互联网江湖——探底黑产,描绘作战地图

我是搬运工,原贴地址:http://click.aliyun.com/m/5826/ 摘要: 保卫阿里云这个中国 35% 的网站都坐落其上的云计算平台和上面的居民,道哥觉得自己守土有责,不容有失。 吴翰清,这个资深黑客拥有诸多身份:写“道哥的黑板报”的“文艺网红”& 阿里云云盾的负责人。 在他心里,第一个身份轻如鸿毛,第二个身份重若泰山。 保卫阿里云这个中国 35% 的网站都坐落其上的云计算平台和上面的居民,道哥觉得自己守土有责,不容有失。 探底黑产,描绘自己的作战地图,是他对自己职责要求的一部分。 他告诉我们一个秘诀:“想要知道中国的黑产有哪些行业,只要看淘宝的禁限售板块就够了。”DDoS攻击,敲诈勒索,暗网黑市,这些黑色产业,往往最终都会涉及到对阿里云上...阅读全文

Golang 实现RSA 加密解密(附带php)

安全总是很重要的,各个语言对于通用的加密算法都会有实现。前段时间,用Go实现了RSA和DES的加密解密,在这分享一下。(对于RSA和DES加密算法本身,请查阅相关资料) 在PHP中,很多功能经常是一个函数解决;而Go中的却不是。本文会通过PHP加密,Go解密;Go加密,PHP解密来学习Go的RSA和DES相关的API。 该文讨论Go RSA加密解密。所有操作在linux下完成。 一、概要 这是一个非对称加密算法,一般通过公钥加密,私钥解密。 在加解密过程中,使用openssl生产密钥。执行如下操作: 1)创建私钥: openssl genrsa -out private.pem 1024 //密钥长度,1024觉得不够安全的话可以用2048,但是代价也相应增大 2)创建公钥: openssl...阅读全文

博文 2017-02-09 08:31:39 载昊君

使用Go实现TLS 服务器和客户端

传输层安全协议(Transport Layer Security,缩写:TLS),及其前身安全套接层(Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。 SSL包含记录层(Record Layer)和传输层,记录层协议确定了传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。 本文并没有提供一个TLS的深度教程,而是提供了两个Go应用TLS的简单例子,用来演示使用Go语言快速开发安全网络传输的程序。 ...阅读全文

博文 2017-02-08 12:53:37 smallnest

Golang RSA算法与 java(android)的互通

注:这里的java代码跑在android,最后的结果,本人看上去是一致的 互通要达到的要求 RSA加密位数:统一采用RSA 1024 分组加密条件:RSA/ECB/PKCS1Padding 以上条件java 与 go均要满足,还有一点要注意,虽然java默认使用的是:RSA/ECB/PKCS1Padding。但安卓不是,所以安卓平台默认使用的RSA填充要自己指定。go 只要解密,java只要加密。私钥与公钥各平台只有一种。加密结果转成base64。 java 代码: /** *利用Go语言产生的公钥加密 * @param pubkey_from_go 从服务器(go语言实现)获取的公钥 * @param plainText 需要加密的字符串 */ public static String e...阅读全文

博文 2017-04-19 08:55:38 送你一碗大麦茶

Go 实现的加解密库GoRSA

Golang使用RSA进行公钥加密私钥解密,私钥加密公钥解密的实现 基于 [https://github.com/farmerx/gorsa](https://github.com/farmerx/gorsa) 进行封装优化了如下几点: 公私钥需要提前注册,在并发情况下公私钥匙会混乱 加密机没有进行base64处理,在跨程序传递或存储过程中都避免base64二次封装 传入返回都统一使用string类型避免转换麻烦 获取扩展包: 具体使用...阅读全文

开源项目 2018-02-17 02:30:00 网友

Go代码打通HTTPs

TL;DR 手工创建CA证书链,手写代码打通HTTPs的两端 HTTPs最近是一个重要的话题,同时也是一个有点难懂的话题。所以网上有大量的HTTPs/TLS/SSL的教程。关于这些的原理,这里不做讲解,有兴趣的可以自行搜索。 本文介绍一个自己创建证书,并编写 Go 代码实现 client/server 两端的过程。从实践的角度帮助理解。 构建 CA 证书链 我们首先要创建 client/server 使用的证书。创建证书的方法有很多种:有不怕麻烦,直接通过 openssl创建的,有通过 cfssl 创建的。这里要介绍的是我认为最简单的一种:tls-gen tls-gen是一个用 Python 编写的、非常易用的工具。它定义了三种 profile。这里我们选择最简单的一种:一个根证书和一组证书...阅读全文

博文 2018-02-13 23:34:36 西北那个峰

Golang之双向认证

此篇文章主要介绍https用Golang生成证书和Golang实现https认证的过程,至于ssl/tls相关的知识点,我在文章末尾会附上我个人觉得对读者有用的文章。单向验证过程:客户点包含ca.crt,服务端包含server.key和server.crt;客户端:客户端生成一个随机数random-client,传到服务器端;服务端:服务器端接收消息之后,生成一个随机数random-server和包含公钥的证书,一起回馈给客户端;客户端:客户端收到的东西原封不动,加上premaster secret(通过random-client、random-server 经过一定算法生成的数据),再一次送给服务器端,这次传过去的东西是经过服务端的公钥进行加密后数据;服务端:服务端经过私钥(server....阅读全文

博文 2018-07-02 23:34:40 取个帅气的昵称华华

Golang学习笔记之HTTPS

一:HTTPS介绍 HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版,是使用TLS/SSL加密的HTTP协议。 HTTP和HTTPS的区别 • HTTPS是加密传输协议,HTTP是名文传输协议 • HTTPS需要用到SSL证书,而HTTP不用 • HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO • HTTPS标准端口443,HTTP标准端口80 • HTTPS基于传输层,HTTP基于应用层 • HTTPS在浏览器显示绿色安全锁,HTTP没有显示 二、HTTPS证书 正式发布的时候,...阅读全文

博文 2018-12-22 18:34:43 学生黄哲

让互联网更快的协议,QUIC在腾讯的实践及性能优化

作者|罗成 编辑|小智 本文主要介绍 QUIC 协议在腾讯内部及腾讯云上的实践和性能优化。欲了解 QUIC 协议产生的背景和核心特性,可阅读今日二条推文。 写在前面 如果你的 App,在不需要任何修改的情况下就能提升 15% 以上的访问速度。特别是弱网络的时候能够提升 20% 以上的访问速度。如果你的 App,在频繁切换 4G 和 WIFI 网络的情况下,不会断线,不需要重连,用户无任何感知。如果你的 App,既需要 TLS 的安全,也想实现多路复用的强大。如果你刚刚才听说 HTTP2 是下一代互联网协议,如果你刚刚才关注到 TLS1.3 是一个革命性具有里程碑意义的协议,但是这两个协议却一直在被另一个更新兴的协议所影响和挑战。如果这个新兴的协议,它的名字就叫做“快”,并且正在标准化为新一代...阅读全文

如何在 JAVA 中进行消息签名并在 GO 中进行验证

在我的公司中,我们使用 Java 和 Go 作为开发平台,当然有时候这些项目彼此之间会进行交互。在这篇文章中,我想要介绍我们的关于在 Java 端进行消息签名并在 Go 服务程序中进行验证的解决方案。 首先,我们聊一聊下面这个架构,我们的 Java 应用程序运行在云上新建虚拟机实例中,并且这个基础镜像实例包含了一个小的 Go 服务程序。这个服务程序是我们的配置管理系统的主入口,我们不希望有来自不可信的客户端可以修改节点。在请求中包含签名的双向 SSL 看起来足以信任客户端。但由于这两个组件都是开源的,所以我们在二进制文件中没有任何“秘密”,因此我们选择了RSA非对称秘钥对来生成和验证签名。Java 端拥有私钥,Go 端拥有公钥。 Java 是一个古老的平台(个人有多年的Java经验)因此,J...阅读全文

博文 2018-03-27 22:27:45 polaris

求助,rsa加密问题

模拟登录百度已经获取公钥字符串 -----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDo5mHL8+BKHRJs26fMT2f8NtGS\n9XrpLIciE0iAZYmfYIZ0Sph9qN0WSjnrfT7osl0hPYEUedcbYLSINRGlv8WAzDHW\nPSMd39hs0sVET7AikE3EKByhyIqjy1V003GygGJwsfRLOCyWBmZ8SJnpYzebyRpV\nCac1DlPIiVut5FE4CwIDAQAB\n go语言如何利用上面字符串公钥加密密码呢?...阅读全文

用 Go 构建一个区块链 -- Part 5: 地址

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。 引言 在上一篇文章中,我们已经初步实现了交易。相信你应该了解了交易中的一些天然属性,这些属性没有丝毫“个人”色彩的存在:在比特币中,没有用户账户,不需要也不会在任何地方存储个人数据(比如姓名,护照号码或者 SSN)。但是,我们总要有某种途径识别出你是交易输出的所有者(也就是说,你拥有在这些输出上锁定的币)。这就是比特币地址(address)需要完成的使命。在上一篇中,我们把一个由用户定义的任意字符串当成是地址,现在我们将要实现一个跟比特币一...阅读全文

博文 2017-11-06 14:04:41 liuchengxu

Golang写https服务端

1. 生成私钥openssl genrsa -out key.pem 20482. 生成证书openssl req -new -x509 -key key.pem -out cert.pem -days 10953. 服务端代码: package main import ( "fmt" "log" "net/http") func test(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "this is a test for you")} func main() { http.HandleFunc("/test", test) err := http.ListenAndServeTLS(":8080", "cert.pem"...阅读全文

博文 2016-09-09 18:00:02 zolo