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

区块链基础入门

一、区块链产品概览 1.1 区块链产品及 区块链产品主要有:底层平台、开放平台、应用场景 1.2 区块链产品特点 底层平台 通用基础设置 与业务场景无关 技术门槛较高 多技术结合:分布式存储+点对点网络+密码学等等 开放平台 与业务场景相关性低 面向区块链应用开放者 起步探索阶段,成熟产品相对较少 应用场景 可应用的领域和场景广泛 与业务场景密切相关 具有可拓展性 易形成价值网络 二、底层平台 底层平台有:公有链、 联盟链、私有链 2.1 底层平台-公有链 向全世界所有人开放,每个人都能成为系统中的一个节点参与记账的区块链,它们通常将激励机制和加密数字验证相结合,来实现对交易的共识。 2.2 底层平台-联盟链 若干个机构共同参与记账的区块链,即联盟成员之间通过对多中心的互相信任来达成共识。联...阅读全文

大型网站的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

【互联网早报】2017.11.03

## ??国内新闻?? 1. 彭博:滴滴出行启动合资项目 ,设电动汽车充电网络; http://dwz.cn/6MfJb0 2. 微博或推出全新会员制度,看图也要付费; http://dwz.cn/6Mfkv2 3. 工商总局要求加强双十一活动监管:做到七不得; http://dwz.cn/6Mfroo 4. 「上上签」收购「快签」,电子签名行业进入整合阶段? http://dwz.cn/6MfpUG ## ? 国际新闻? 1. IBM 推出新平台,用开放架构争夺混合云客户; http://dwz.cn/6Mftz1 2. 谷歌推出 3D 对象分享平台 Poly 面向创作者; http://dwz.cn/6Mfsd0 ...阅读全文

招聘Golang开发工程师(上海)

发个招聘帖,咱公司要招聘Golang开发工程师啦,以下是职位描述。有兴趣者请投简历至eva.wang@trustasia.com. 我们期待您的加入。 公司介绍: 亚数信息科技(上海)有限公司主要从事数字证书及信息安全产品的研发与销售,并提供网络信息安全整体解决方案与专业信息安全服务。这其中包括全球可信的服务器SSL证书、软件代码签名证书、邮件安全证书、客户端证书以及各类电子文档签名证书,企业自行管理证书的PKI管理平台部署以及企业服务器安全监测服务。目前,公司的客户包括华为、三星、京东、中国银联、百度和中国移动等。 亚数信息科技(上海)有限公司以“加密无处不在,让互联网更安全可信”为使命,努力成为国内信息安全领域的创新者和技术领先者,为客户提...阅读全文

Go语言 Go加密之DES

接着RSA加密解密,我们继续来看看DES的加密解密 一、DES简介 DES(Data Encryption Standard)是对称加密算法,也就是加密和解密用相同的密钥。其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。 DES加密,涉及到加密模式...阅读全文

博文 2015-06-17 23:01:48 abv123456789

Go 实现安全 cookie

我第一次学习 Go 的时候,已经有了一定的 Web 开发经验,但是直接使用 cookie 的经验还比较少。我之前是用 Rails 的,在 Rails 里面如果要读/写 cookie,并不需要自己去实现所有的安全措施。 如你所见,Rails 偏向于通过默认配置就将大部分事情搞定。你不必去设置 CSRF 反制措施,或者做任何特殊操作来加密 cookie。在较新版本的 Rails 中这一切都默认帮你做好了。 用 Go 开发就完全不同了,这些事情并没有默认帮你做好。所以当你想使用 cookie 时,了解所有这些安全措施就很重要:为什么存在有这些措施,以及如何在我们自己的程序中使用它们。本文旨在帮助你了解上述知识点。 > 本文目的不在于引发关于哪条路线更好的讨论/争论。两者都有各自的优点,这里不去比较...阅读全文

博文 2018-11-21 09:44:27 polaris

2019公链项目实战 区块链公链项目实战 golang公链项目实战(视频+源码)

任务1:001 – 内容介绍.mp4任务2:002 -Block结构.mp4任务3:003 – 根据区块数据生成区块HASH.mp4任务4:004 – CreateGenesisBlock.mp4任务5:005 – Blockchain结构.mp4任务6:006 – 添加新的区块.mp4任务7:007 – ProofOfWork框架.mp4任务8:008 – 工作量证明算法分析.mp4任务9:009 – target移位处理.mp4任务10:010 – 挖矿算法完整实现.mp4任务11:011 – 判断区块Hash的有效性.mp4任务12:012 – 课程目标.mp4任务13:013 – 区块的序列化和反序列化.mp4任务14:014 – boltdb数据库的创建或者打开.mp4任务15:0...阅读全文

博文 2019-03-12 20:34:43 java20192019

Darma Cash简介

基础DMC 是在XMR基础上整合树图、DDPOS 、智能合约、预言机、及时通信等技术的区块链项目。一、创新 1、 创新采用树图结构并结合POW + DDPOS 共识模型,保证了币分发的公平性,又能保证币流通的安全性。 通过引入树图协议,让DMC在去中心化且POW条件下实现高TPS和协议层杜绝双花;而DDPOS (不限制节点的去中心化委托权益证明)进一步加强了网络的安全性,树图结构+POW +DDPOS 三者的融合让DMC在性能、安全、去中心化三角中实现了最优解。2、 在XMR基础上原创基于Omni Layer协议的隐私TOKEN,具有比ERC20 更安全、可靠、且完美继承XMR 全部的隐私特性的优点。3、支持golang语言的DVM虚拟机DMC原创并集成了一个基于WASM 优化的轻量级、图灵...阅读全文

博文 2020-03-05 03:32:40 DarmaCash

Docker 1.8.0增加Content Trust,容器安全性提升

![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2015/08/docker1.8.01.jpg) Docker这家初创公司,让Docker在Linux容器中构建和部署应用越来越受欢迎,最近宣布了一项行特性,Docker在其最新版本的开源产品中增添Content Trust,这项功能将为使用容器的人们提供一个额外的安全层。 Docker Content Trust ,现在可以在Docker1.8.0版本中获取,它允许开发者在Docker Hub上下载container images之前检查其合法性。此项措施有望确保企业在利用Docker在自己的基础设施上部署应用时,不会有任何潜在的危险。 这对Docker来说异常...阅读全文

go语言调用阿里云OpenApi的签名加密问题?

https://help.aliyun.com/document_detail/25492.html?spm=5176.doc25490.2.2.Uwn9UA 我按照url的文档,对StringToSign进行hmac sha1进行加密,然后base64,得到的结果与文档例子的结果不一致 [v2-c7765a6260196517ed843e4f01d9e381_r.png](http://studygolang.qiniudn.com/170504/f396c10be7d70db4cbf999e6d0680f74.png) 我的代码: ``` package main import "fmt" import "crypto/sha1" im...阅读全文

Bytom国密网说明和指南

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockc... 国密算法是指国家密码管理局制定的自主可控的国产算法,包括一系列密码学算法:SM1、SM2、SM3、SM4、SM7、SM9、以及祖冲之算法。最常用的三种商用密码算法是 SM2椭圆曲线公钥密码算法、SM3密码杂凑算法以及 SM4分组密码算法。 其中,SM2 算法属于椭圆曲线公钥密码系统,相较于 RSA 公钥密码系统,这种新型的公钥密码系统拥有加解密速度更快,使用的密钥更短的优点。SM2算法密钥长度为192至256位长度的安全性就能达到 RSA 算法2048至4096位密钥长度的安全要求。SM2的优异性能取决于求解椭圆曲线...阅读全文

博文 2018-10-26 08:34:40 比原链Bytom

golang-MD5

什么是MD5? MD5:为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321. MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。 下面是在goalng下如何实现md...阅读全文

装逼的傻逼不用装

都是一个逼,我骂git,然后立刻就有人来骂我。这种心态和奴才见到主子被欺负的状态一模一样。 这种人非常恶心,而且通常能力不高。你这煞笔要骂我那我就让你知道自己是个什么东西。 这种人和贴吧里的一种煞笔通常是一种人,常常暴露自己的能力上限。贴吧里有种人,在签名档里写自己是一个程序员。这其实是一种标签行为,往往是自己身上最好的东西,而且是相当满意。 就好比说,我是上海人。这也是一种标签行为。 因为没什么值得炫耀的了,所以拿最好的东西,出身来炫耀。 护主的这只狗,我可以百分之百推理出,是一只煞笔! 他最好的标签就是程序员。而且以一个行业普遍标准来标签的,通常水平又不高。正因为水平不高,才会对行业有归属感,正因为对行业有归属感,才会有守护某些东西的行为,因为这种行为给了自己一个暗示,他也是...阅读全文

golang-MD5

什么是MD5? MD5:为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321. MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。 下面是在goalng下如何实现md...阅读全文

golang[34]-区块链-对称加密与非对称加密

对称加密对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。与公开密钥加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。常见的对称加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。对称加密的速度比公钥加密快很多,在很多场合都需要对称加密。非对称加密公开密钥加密(英语:Public-key cryptography),也称为非对称加密(英语:asymmetric cryptography),是密码学的一种算法,它需要两个密钥...阅读全文

博文 2018-12-13 00:35:45 jonson_jackson

区块链技术背后的运行逻辑

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链技术可能是自互联网技术以来最伟大的发明。区块链可以在不需要有中央权威机构的情况下或不需要双方信任的情况下交换价值或财富。想像一下你和我要赌明天旧金山的天气,赌50美元。我赌明天出太阳,你赌明天会下雨。今天,我们会有三种方式来管理我们之间的赌约: 1、我们可以相信对方。无论下雨还是出太阳,输的一方都会给赢的一方50美元。如果我们是朋友,这种管理方式很好。不过,无论是朋友还是陌生人,总会有人赖账的。 2、我们可以将赌约写下来形成合同。签订合同,双方履行最后赌约就有了保障,然而,如果输掉的一方不愿意付钱的话,赢的一方还要花额外的费用来打官司等等,这可能要花很长时间。尤其是对于小额现金,这可能不是最好的交易管理方式...阅读全文

博文 2019-09-27 17:02:44 链客

上海徐汇区互联网公司招聘Golang开发工程师啦

Hi 大家好,我是 Eva,我们公司来招聘Golang开发工程师啦,公司base在上海徐汇,工作内容和要求如下,有兴趣的小伙伴们欢迎发送简历至我的邮箱:eva.wang@trustasia.com,谢谢。 Golang 开发工程师 职位诱惑 : 弹性工作制、不加班、rMBP开发、技术大 牛多、职能部门妹子多 职责描述: 后端服务程序开发; 使用Golang进行PKI、SSL、数字签名方面的研发; 使用高并发进行网络漏洞检测、扫描、抓取分析; 任职要求: 熟练使用Golang进行Web应用开发,会使用相关框架(beego、gin); 精通一门以上编程语言(C/C++,Go,Java,Python等); 熟悉数据结构,有并发编程经验更佳; 熟悉数据库的使用(...阅读全文

区块链技术背后的运行逻辑

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链技术可能是自互联网技术以来最伟大的发明。区块链可以在不需要有中央权威机构的情况下或不需要双方信任的情况下交换价值或财富。想像一下你和我要赌明天旧金山的天气,赌50美元。我赌明天出太阳,你赌明天会下雨。今天,我们会有三种方式来管理我们之间的赌约: 1、我们可以相信对方。无论下雨还是出太阳,输的一方都会给赢的一方50美元。如果我们是朋友,这种管理方式很好。不过,无论是朋友还是陌生人,总会有人赖账的。 2、我们可以将赌约写下来形成合同。签订合同,双方履行最后赌约就有了保障,然而,如果输掉的一方不愿意付钱的话,赢的一方还要花额外的费用来打官司等等,这可能要花很长时间。尤其是对于小额现金,这可能不是最好的交易管理方式...阅读全文

博文 2019-09-24 13:32:47 链客

2019 Golang公链项目实战

百度网盘任务1:001 - 内容介绍.mp4任务2:002 -Block结构.mp4任务3:003 - 根据区块数据生成区块HASH.mp4任务4:004 - CreateGenesisBlock.mp4任务5:005 - Blockchain结构.mp4任务6:006 - 添加新的区块.mp4任务7:007 - ProofOfWork框架.mp4任务8:008 - 工作量证明算法分析.mp4任务9:009 - target移位处理.mp4任务10:010 - 挖矿算法完整实现.mp4任务11:011 - 判断区块Hash的有效性.mp4任务12:012 - 课程目标.mp4任务13:013 - 区块的序列化和反序列化.mp4任务14:014 - boltdb数据库的创建或者打开.mp4任务...阅读全文

博文 2019-10-29 15:03:42 一直努力跑

移动终端app测试点总结

以下所有测试最后必须在真机上完整的执行 1、安装、卸载测试 在真机上的以及通过91等第三方的安装与卸载 安装在手机上还是sd卡上 2、启动app测试 3、升级测试   数字签名、升级覆盖安装、下载后手动覆盖安装、跨版本升级、升级后可以正常使用。   覆盖安装要确保数据库有字段更新的话,能正常更新,否则就容易导致app异常。 4、功能测试   包括功能点、业务逻辑、关联性(主要测试客户端与PC端的交互,客户端处理完后,PC端与客户端数据一致)、   服务端接口测试(主要通过访问服务端接口来验证服务端业务逻辑功能点是否正确) 5、数据对比测试   可在模拟器或真机上进行,同时与数据库中实际的插入记录做对比。还要对比主站的相同流程...阅读全文

【go密码学】-非对称加密算法

RSA RSA加密 在RSA中,明文、密钥和密文都是数字。加密过程可以用下列公式: 加密公式中出现的E和N的组合就是公钥。 RSA解密 公式: 数字D和N组合起来就是RSA的私钥。 生成密钥对 求N N = p x q (p、q为质数)。q、q太小容易被破译,太大会导致计算时间很长。N = 17 x 19 = 323 求L(L是仅在生成密钥对的过程中使用的数) L = lcm(p-1,q-1) (L是p-1和q-1的最小公倍数)L = lcm(16,18) = 144 求E 1 < E < Lgcd(E,L) = 1 ;表示E和L的最大公约数为1;E = 5,7,11,13,17,19,23,25,29,31 求D 1 < D < LE x D mod L = 1D = 29 go应用 pa...阅读全文

博文 2018-10-12 20:34:38 jincheng828

【go密码学】-数字签名

介绍 数字签名就是只有消息的发送者才能产生的别人无法伪造的一段数字串,这段数字串是对信息真实性的有效证明。 发送者:生成签名 接受者:验证签名 非对称密码机制 非对称加密中,公钥用于加密,私钥用于解密。数字签名中相反,私钥生成签名,公钥验证签名。 数字签名方法 直接对消息签名 对消息的散列值签名 先用单向散列函数求出消息的散列值,然后再将散列值进行加密。 数字签名算法 RSA 案例一 package main import ( "crypto/rsa" "crypto/rand" "fmt" "crypto/md5" "encoding/base64" "crypto" ) //用公钥加密,私钥解密 //用私钥签名,公钥验证 //公钥是公开的,任何人可以使用公钥,私钥非公开(保存好) //一...阅读全文

博文 2018-10-13 10:34:42 jincheng828

散列/哈希算法

文档 算法分析基于 RFC 3174 Request For Comments (RFC),所有关于Internet 的正式标准都是以RFC(Request for Comment )文档出版。需要注意的是,还有大量的RFC文档都不是正式的标准,出版目的都是为了提供信息。 由互联网协会(Internet Society,简称ISOC)赞助发行,会交到互联网工程工作小组(IETF)和互联网结构委员会(IAB)。文档可由网站 https://www.ietf.org/ 下载。 SHA1 描述 全称为 Secure Hash Algorithm 1(安全散列算法1)。是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。1993年 发布 ...阅读全文

博文 2019-06-22 15:32:39 悟剑声

golang中md5生成

package main import ( "crypto/md5" "fmt" "io" ) // golang md5加密 func main() { h := md5.New() // 签名 sign := "wasdhasdhjasduh" // 生成md5码写法1 io.WriteString(h, sign) sum := fmt.Sprintf("%x", h.Sum(nil)) fmt.Println("sum:", sum) // 生成md5码写法2 data := []byte("wasdhasdhjasduh") sum = fmt.Sprintf("%x\n", md5.Sum(data)) fmt.Println("sum:", sum) //sum: f48798...阅读全文

博文 2018-08-10 12:30:02 LittleLee

golang 生成android 签名文件

package main import ( "strings" "log" "os" "archive/zip" "crypto/sha1" "io" "path" "encoding/base64" ) func Sha1File(f string) error { sha1h := sha1.New() file, err:= os.Open(f) if err != nil{ return err } defer file.Close() if _, err = io.Copy(sha1h,file);err!=nil{ return err } log.Println("sha1:", base64.StdEncoding.EncodeToString(sha1h.Sum(nil))...阅读全文

博文 2017-08-24 12:33:18 zdglf

微信golang签名算法

type WXPrams struct { m map[string]interface{} // 参数 sign string // 签名 } func (p *WXPrams) InitSign() { var keys []string for k, _ := range p.m { keys = append(keys, k) } sort.Strings(keys) builder := strings.Builder{} for _, v := range keys { builder.WriteString(v) builder.WriteString("=") builder.WriteString(fmt.Sprint(p.m[v])) builder.WriteStrin...阅读全文

博文 2019-01-02 19:34:46 AlberLiu

golang实现摘要签名和验证

golang实现摘要签名和验证的过程: 两个步骤: 利用私钥对一个摘要进行签名。 $ ./test -command sign -key ./privatekey.pem -text "12345" MEUCIE7DsGmTHJ3VGZec2UF9hRX7jq9Yd7F2kS7kEL132js8AiEA/ZlyIpo86Rn3waR8m2c4BtQPu8cNjYAnroibK+ujslY= 利用公钥验证签名是否有效。 $ ./test -command verify -cert ./publickey.pem -text "12345" -sign "MEQCIFuvcVHlztAN7YVehgCDYzVSo1Q10iTKeJE5ydxzfih5AiAC2ETt/8XuE1VHaGkLsiJ...阅读全文

博文 2020-01-16 07:32:39 CodingCode

Go语言开发(十五)、Go语言常用标准库五

Go语言开发(十五)、Go语言常用标准库五 一、md5 1、md5简介 md5在crypto/md5包中,md5包提供了New和Sum方法。 func New() hash.Hash func Sum(data []byte) [Size]byte hash.Hash继承了io.Writer,因此可以将其当成一个输入流进行内容的更新。 type Writer interface { Write(p []byte) (n int, err error) } Write方法将p中的内容读入后存入到hash.Hash,最后在Sum方法通过内部函数checkSum计算出其校验和。Sum函数是对hash.Hash对象内部存储的内容进行校验和计算然后将其追加到data的后面形成一个新的byte切片。通常...阅读全文

博文 2019-01-20 00:35:14 天山老妖S

Go Web 编程--如何确保Cookie数据的安全传输

什么是Cookie Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。 Cookie主要用于以下三个方面: 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息) 个性化设置(如用户自定义设置、主题等) 浏览器行为跟踪(如跟踪分析用户行为等) Go语言如何表示Cookie 在Go的net/http库中使用http.Cookie结构体表示一个Cookie数据,调用http.SetCookie函数则会告诉终端用户的浏览器把...阅读全文

博文 2020-03-08 21:34:25 kevinyan

兄弟连区块链教程Fabric1.0源代码分析ECDSA椭圆曲线数字签名算法

##兄弟连区块链教程Fabric1.0源代码分析ECDSA椭圆曲线数字签名算法,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 # Fabric 1.0源代码笔记 之 ECDSA(椭圆曲线数字签名算法) ## 1、椭圆曲线算法概述 ### 1.1、无穷远点、无穷远直线、射影平面 * 平行线相交于无穷远点; * 直线上有且只有一个无穷远点; * 一组相互平行的直线有公共的无穷远点; * 平面上任何相交的两直线,有不同的无穷远点; * 全部无穷远点沟通一条无穷远直线; * 平面上全部无穷远点和全部普通点构成射影平面。 ### 1.2、射影平面点定义 对于普通平面上...阅读全文

博文 2018-11-09 15:11:26 ITXDL

区块链技术

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 第一章:区块链基本知识 1.区块链概念 顾名思义,“区块链”是一个链表,这个链表由所有人共同维护和认可。 1.1.什么是区块链 区块链(Block chain)是一种分布式共享数据库(数据分布式储存和记录),利用去中心化和去信任方式集体维护一本数据薄的可靠性的技术方案。 如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。 1.2.区块链的特点 区块结构有两个非常重要的特点: l每个区块的块头包含了前一区块的交易信息的压缩值,因此从创始块到当前区块形成了链条。 l每个区块主体上的交易记录是前一区块创建后、该区块创建前发生的所...阅读全文

博文 2019-09-12 18:02:37 链客

兄弟连区块链技术培训Fabric 1.0源代码分析(34) Peer #peer chaincode命令及子命令实现

兄弟连区块链技术培训Fabric 1.0源代码分析(34) Peer #peer chaincode命令及子命令实现# Fabric 1.0源代码笔记 之 Peer #peer chaincode命令及子命令实现## 1、peer chaincode install子命令实现(安装链码)### 1.0、peer chaincode install子命令概述peer chaincode install,将链码的源码和环境封装为一个链码安装打包文件,并传输到背书节点。peer chaincode install支持如下两种方式:* 指定代码方式,peer chaincode install -n <链码名称> -v <链码版本> -p <链码路径>* 基于链码打包文件方式,peer chainc...阅读全文

博文 2018-07-23 15:34:59 Delete_88c3

golang[33]-blockchain-hash

哈希函数有三个特点:输入无限的字符会输出给我们固定长度的字符(即便是图书馆里面所有的数据)输入的函数的微小变化最后都会带来哈希函数返回值的巨大变化。哈希函数的特点是不能根据哈希函数的返回值倒推出我们输入的数据是什么。同样的,我们在计算哈希函数之前,也不能够判断出数据回输出什么样的哈希值。用途数字指纹数字签名数字防篡改go实现hash123456789101112131415161718192021222324252627func main(){ //第一种方式 sum:= sha256.Sum256([]byte("jonson love olaya")) fmt.Printf("%X",sum) //第2种方式 h:=sha256.New() h.Write([]byte("jonson ...阅读全文

博文 2018-12-13 00:35:45 jonson_jackson

golang[36]-区块链-数据签名生成

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475package mainimport ( "crypto/ecdsa" "crypto/rand" "crypto/sha256" "crypto/elliptic" "log" "fmt")//生成私钥和公钥,生成的私钥为结构体ecdsa.PrivateKey的指针//type PrivateKey struct {// PublicKey// D *big.Int//}func newKeyPair2() (e...阅读全文

博文 2018-12-13 00:35:45 jonson_jackson

golang[37]-blockchain-验证数据签名

验证数据签名1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192package mainimport ( "crypto/ecdsa" "crypto/rand" "crypto/sha256" "crypto/elliptic" "log" "fmt" "math/big")//生成私钥和公钥,生成的私钥为结构体ecdsa.PrivateKey的指针//type PrivateKey struct...阅读全文

博文 2018-12-13 00:35:45 jonson_jackson

区块链密码学

链客,专为开发者而生,有问必答!此文章来自[区块链技术社区](https://www.liankexing.com),未经允许拒绝转载。 区块链密码学11一 、概念主要介绍非对称加密的一些概念。公钥、私钥:均可加密或解密。私钥用来解密和签名,给自己用的。公钥由本人公开,用于加密和验证签名,给他人用的。验签:用公钥解密签名得到摘要,然后用原始文件经过hash得到摘要,与解密出的摘要进行对比。 签名:内容->hash->digest->私钥加密->签名 证书:数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章,即CA的私钥加密生成)后形成的一个数字文件。二、举例说明假设X给Y写一份信,那么这封将...阅读全文

博文 2019-06-21 16:02:43 链客区块链技术问答社区

Ethereum学习笔记3--以太坊用到的加密技术

一 加密技术总结 "crypto/ecdsa":用与数字签名 "golang.org/x/crypto/sha3" "crypto/rand" "github.com/ethereum/go-ethereum/crypto/bn256/google" "github.com/ethereum/go-ethereum/crypto/bn256/cloudflare" "crypto/elliptic" "github.com/ethereum/go-ethereum/crypto/secp256k1" "crypto/pbkdf2" "crypto/aes" "crypto/cipher" "crypto/hmac "crypto/subtle" "crypto/cipher" "crypto...阅读全文

博文 2019-08-02 21:32:38 陈兴强

Hyperledger Fabric 1.3 特性调研之Identity Mixer(一)

Idemix(Identity Mixer)是一套协议加密组件,提供更强大的身份验证和隐私保护特性。 适用场景 用户发送交易时,需要隐藏自己的身份信息,并且不希望其他人通过追踪交易记录查找到自己发送的交易。即用户的保密要求比较严格,具体为用户在需要以下保密要求时,建议使用该功能: 匿名性(anonymity):不暴露交易者的身份; 无关联性(unlinkability):无法通过多个交易确定发送者身份,即一个身份发送多条交易不会暴露这些交易来自相同的身份。 原理 发行方(issuer)颁发给用户证书,认证用户的一些属性。 用户生成ZKP(zero-knowledge proof),证明自己拥有该证书,并选择性地暴露自己的部分属性;将此ZKP发送给验证方(verifier)即可。 具体在Fab...阅读全文

博文 2019-07-03 17:35:19 RaeSnow

golang中crypto/dsa包

DSA是用于数字签名的一种算法,私钥进行签名,公钥进行验证。关于更多dsa内容以及dsa实现移步www.baidu.com。 那么go语言中怎么进行数字签名呢?go语言中怎么进行数字验证呢?下面给出这两个操作的案例代码: package main import ( "crypto/dsa" "crypto/rand" "fmt" ) func main() { // parameters 是私钥的参数 var param dsa.Parameters // L1024N160是一个枚举,根据L1024N160来决定私钥的长度(L N) dsa.GenerateParameters(¶m, rand.Reader, dsa.L1024N160) // 定义私钥的变量 var priva...阅读全文

博文 2018-12-09 11:34:43 laijh

BitKan

梅克尔树(Merkle trees)是区块链的基本组成部分。虽说从理论上来讲,没有梅克尔树的区块链当然也是可能的,你只需创建直接包含每一笔交易的巨大区块头(block header)就可以实现,但这样做无疑会带来可扩展性方面的挑战,从长远发展来看,可能最后将只有那些最强大的计算机,才可以运行这些无需受信的区块链。 正是因为有了梅克尔树,以太坊节点才可以建立运行在所有的计算机、笔记本、智能手机,甚至是那些由Slock.it生产的物联网设备之上。那么,究竟梅克尔树是如何工作的呢,它们又能够提供些什么价值呢,现在以及未来的? 首先,咱们先来讲点基础知识。梅克尔树,一般意义上来讲,它是哈希大量聚集数据“块”(chunk)的一种方式,它依赖于将这些数据“块”分裂成较小单位(bucket)的数据块,每一...阅读全文

博文 2017-12-06 03:34:43 谈谈以太坊的Merkle树

兄弟连区块链教程Fabric1.0源代码分析Peer peer chaincode命令及子命令实现

兄弟连区块链教程Fabric1.0源代码分析Peer peer chaincode命令及子命令实现,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。# Fabric 1.0源代码笔记 之 Peer #peer chaincode命令及子命令实现## 1、peer chaincode install子命令实现(安装链码)### 1.0、peer chaincode install子命令概述peer chaincode install,将链码的源码和环境封装为一个链码安装打包文件,并传输到背书节点。peer chaincode install支持如下两种方式:* 指...阅读全文

博文 2018-11-06 19:34:39 兄弟连区块链培训

Golang面试之HTTPS

引用 HTTPS协议详解(一):HTTPS基础知识 TLS/SSL工作原理 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 深入HTTPS系列四(中间人攻击) HTTPS中间人攻击及防御 建议阅读 SSL/TLS 握手过程详解 细说 CA 和证书 扯一扯HTTPS单向认证、双向认证、抓包原理、反抓包策略 HTTPS协议 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 TLS/SSL全称安全传输层协议Transport Layer Security, 是介于T...阅读全文

博文 2020-05-11 19:32:50 网管同学

初识Clef

初识Clef 以太坊版本1.8.4开始,增加了独立签名人Clef功能,该功能目前尚处在alpha阶段。它主要实现了签署交易、签署数据和管理账户。它的README中是这样描述的: Clef可以用来签署交易和数据,并且可以代替geth的账户管理。这使DApps不依赖于geth的账户管理。 当DApp想要签署数据时,它可以将数据发送给签名者,然后签名者将向用户提供上下文并要求用户签署数据。 如果用户授予签名请求,签名者将签名发送回DApp。 此设置允许DApp连接到远程以太坊节点并发送本地签名的事务。 这可以在DApp连接到远程节点的情况下提供帮助,因为本地以太坊节点不可用,不与同步链或没有内置(或有限)帐户管理的特定以太坊节点同步。 Clef可以在同一台机器上作为守护进程运行,也可以在usb-s...阅读全文

博文 2018-06-03 17:34:38 alphaqiu

Hyperledger-Fabric源码分析(加入通道)

前一篇讲完通道创建,接下来马上趁热打铁来看下加入通道这部分的实现,先看下命令。 peer channel join -b mychannel.block 可以看到,这里用上了上一步所生成的通道的genesisblock。 peer executeJoin func executeJoin(cf *ChannelCmdFactory) (err error) { spec, err := getJoinCCSpec() if err != nil { return err } // Build the ChaincodeInvocationSpec message invocation := &pb.ChaincodeInvocationSpec{ChaincodeSpec: spec} cr...阅读全文

博文 2019-04-09 09:34:40 Pillar_Zhong

golang中crypto/ecdsa包

ECDSA和DSA一样也是用于数字签名,同样在go使用上也很类似,RSA、DSA和ECDSA三者的签名的区别,可以移步:https://blog.csdn.net/sszgg2006/article/details/25478269 1、生成公钥、私钥代码 /* 生成公钥和私钥的时候,可以选择以下几种 elliptic.P224() elliptic.P256() elliptic.P384() elliptic.P521() */ // 生成公钥和私钥 privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) if err != nil { log.Fatalln(err) } // 公钥是存在在私钥中的,从私钥中...阅读全文

博文 2018-12-09 13:34:42 laijh

fabric中的plugin机制

fabric中的plugin机制 之前是研究1.0的实现,发现endorse的过程中去escc签名的流程变化很大。下面以escc为例,看下新版的fabric是怎么实现的。 首先怎么自定义一个escc的plugin handlers: ... endorsers: escc: name: DefaultEndorsement custom: name: customEndorsement library: /etc/hyperledger/fabric/plugins/customEndorsement.so ... core.yaml,可以看到/etc/hyperledger/fabric/plugins/customEndorsement.so,这里是使用了golang的一个plugin的...阅读全文

博文 2019-03-04 15:35:50 Pillar_Zhong

go网络编程学习笔记6(安全)

简介 尽管互联网最初被设计为可以承受敌对代理攻击的系统,但它过去一直是在一个可信的实体和合作的环境中发展起来的。可惜现在已经时过境迁。垃圾邮件,拒绝服务攻击,网络钓鱼这些东西使得每一个上网者都需要自行承担风险。 应用程序应当在复杂的互联网环境中仍然可以正确工作。“正确”不光意味着程序功能的正确,同时还意味着要确保数据传输过程中的保密性和完整性,甚至只允许合法用户进行访问和其它问题。 这自然使得编程更加复杂。在构建安全应用程序的过程中,会出现很复杂和微妙的问题。如果你想自己这样做(如实现一个自有安全库),通常都会以失败而告终。相反,你需要使用安全专家设计的安全库。 ISO 安全架构 功能层次 主要的安全系统功能 认证 - 身份校验文件 数据完整性 - 数据不被篡改 保密 - 数据不能暴露给他人...阅读全文

博文 2019-06-14 16:02:51 GeminiGirl0604

加密货币的本质

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 去年,比特币暴涨,其他币也像雨后春笋一样冒出来,已经有1000多种了。 很多人都在问,加密货币(cryptocurrency)的时代,真的来临了吗?将来会不会人类不再使用美元、人民币,改用加密货币?那么多品种,我应该使用哪一种币?要不要现在就去投资一些? 这些问题的答案,我也想知道,就花了很多时间查阅资料、研究协议。前两周发表的《区块链入门教程》和《比特币入门教程》,是我的学习心得。但是,那两篇教程主要介绍基本概念、探讨协议的可行性,没回答一个根本的问题:加密货币到底是什么? 下面就是我对这个问题的思考。阅读之前,如果你已经了解区块链和比特币,那很好;如果不了解,也没关系,本文不涉及技术,只讨论最基本的原理。 一...阅读全文

密码学家的工具箱(golang代码实现)

本文参考《图解密码技术》第三版    密码学家的工具箱,指六种常用加密方式包括 对称密码、非对称密码、单向散列函数、消息认证码、数字签名、伪随机数生成器。堪称六大杀器,现代社会的信息安全皆基于此。本文用go语言代码实现六种工具的具体应用。 对称密码 是指加密解密时用同一个秘钥,下面代码采用AES进行加解密,私钥长度只支持128,192,256位的字节数组。 AES加解密的代码应用: package main import ( "bytes" "crypto/aes" "crypto/cipher" "fmt" ) func PKCS5Padding(ciphertext []byte, blockSize int) []byte { padding := blockSize - len(ci...阅读全文

以太坊挖矿源码:clique算法

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 clique以太坊的官方共识算法是ethash算法,这在前文已经有了详细的分析: 它是基于POW的共识机制的,矿工需要通过计算nonce值,会消耗大量算力来匹配target值。 如果在联盟链或者私链的方案里,继续使用ethash就会浪费算力,POW也没有存在的意义。所以以太坊有了另一种共识方案:基于POA的clique。 POA, Proof of Authority。权力证明,不同于POW的工作量证明,POA是能够直接确定几个节点具备出块的权力,这几个节点出的块会被全网其他节点验证为有效块。 建立私链 通过这篇文章的操作可以建立一个私有链,观察这个流程可以看到,通过puppeth工具建立创世块时,会提示你选择哪...阅读全文

博文 2019-09-27 17:02:47 链客