关于 keccak256 看以太坊代码,发现很多地方使用的加密函数是:keccak256,了解了一下做个输出。...SHA-3的候选人在2008年10月提交。 Keccak采用了创新的的“海绵引擎”散列消息文本。它是快速的,在英特尔酷睿2处理器下的平均速度为12.5周期每字节。它设计简单,方便硬件实现。...Keccak已可以抵御最小的复杂度为2n的攻击,其中N为散列的大小。它具有广泛的安全边际。至目前为止,第三方密码分析已经显示出Keccak没有严重的弱点。...不过NIST接受原始的Keccak256设计后,更改了Padding的格式,以太坊坚持使用了原始的方案,因为这一更改存在争议,导致了正式的SHA3实现和原始的Keccak不兼容。...结论 区块链依赖于加密算法,对加密算法的了解是非常有必要的。全看调用是看不完的,至少需要知道怎么用。
我总是问自己为什么我还在这样做设计,毕竟,这是今天以太网目前可以解决每个烦人的Web应用程序的一个方面。所以我决定停下脚步,设计一下这个解决方案。...事实上,当你使用以太坊时,你需要不断地去改进。 如果你将以太网地址(这只是公钥的sha3哈希)视为网站上的帐户,则可以通过使用私钥对一段数据进行签名来证明你拥有该帐户,这非常容易。...此数据是任意的,可以是网站API提供的任意随机字符串。因此,我们可以使用地址作为用户名并绕过密码的需要。事实上,我们甚至不需要使用区块链来做到这一点。...这是使用Express的样子: 首先,我们需要使用私钥进行椭圆曲线签名: var ethUtil = require(‘ethereumjs-util’); // >=5.1.1 var data =...你的用户已经完全登录,但不需要密码。 UI方面 用户如何在浏览器中实际签署此数据?Metamask会提供帮助!Metamask是一个整洁的chrome扩展,它将web3注入你的浏览器窗口。
我总是问自己为什么我还在这样做设计,毕竟,这是今天以太网目前可以解决每个烦人的Web应用程序的一个方面。所以我决定停下脚步,设计一下这个解决方案。...事实上,当你使用以太坊时,你需要不断地去改进。 如果你将以太网地址(这只是公钥的sha3哈希)视为网站上的帐户,则可以通过使用私钥对一段数据进行签名来证明你拥有该帐户,这非常容易。...此数据是任意的,可以是网站API提供的任意随机字符串。因此,我们可以使用地址作为用户名并绕过密码的需要。事实上,我们甚至不需要使用区块链来做到这一点。...这是使用Express的样子: 首先,我们需要使用私钥进行椭圆曲线签名: var ethUtil = require(‘ethereumjs-util’); // >=5.1.1 var...你的用户已经完全登录,但不需要密码。 UI方面 用户如何在浏览器中实际签署此数据?Metamask会提供帮助!Metamask是一个整洁的chrome扩展,它将web3注入你的浏览器窗口。
因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 ...”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。...这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。 ...,第一:明文数据经过散列以后的值是定长的;第二:是任意一段明文数据,经过散列以后,其结果必须永远是不变的。...前者的意思是可能存在有两段明文散列以后得到相同的结果,后者的意思是如果我们散列特定的数据,得到的结果一定是相同的。
用于消息唯一性和数据完整性验证的散列函数, 其安全性依赖于函数本身的属性和对抗碰撞的抵抗, 因此散列函数的选择至关重要。 MD 系列函数已宣告破解, 可被轻易伪造, 不能作为安全散列函数使用。...SHA 安全加密标准是至今世界上使用最广泛的散列算法之一。SHA1 已宣告破解。考虑性能消耗与安全性的平衡, SHA2 系列算法得到了广泛的认可及应用。...HMAC 是一种使用散列函数构造消息认证码的方法, 任何高强度的散列函数都可以用于 HMAC。...PBKDF2 是一种使用伪随机函数接受明文和 salt 作为输入, 输出的散列值作为输入重新进行散列, 循环该过程上千次, 最终生成一个难以破解的密文的算法。 ?...2.4 非对称加密算法 非对称加密技术中加密和解密使用不同的密钥, 已知密码算法和加密密钥, 求解密密钥在计算上是不可行的。
函数,它会输出长度为 hLen 的结果。...它的算法是基于某个哈希散列函数(主要是 SHA 系列和 MD 系列),以一个密钥和一个消息为输入,生成一个消息摘要作为输出。HMAC 算法与其他哈希散列算法最大区别就是需要有密钥。...,如果密钥的长度超过了摘要算法信息分组的长度,则首先使用摘要算法计算密钥的摘要作为新的密钥。...d.Write(b) } return d.Sum(nil) } 对除了符号位(第一个字节)的其他字节数组进行 sha3 处理. // sha3 的结果共有 32 字节。...// 取 sha3 结果的最后 20 字节,生成地址。
签名本身是椭圆曲线点R和S的两个(编码),而V是恢复公钥所需的两个附加位。 这也解释了为什么返回类型是地址:它返回对应于恢复的公钥(即其sha3/keccak的哈希)的地址。...虽然我知道如何做到这一点,我写了一些“笔记”,我整理和包含在下面的内容,希望能帮助别人了解正确的方向。 我的行动逻辑是使用ethereumjs-util,使用已知的以太坊私钥签署交易。...在服务器上,我们有不同的字符串(消息哈希和签名),但是PHP不知道这些字符串中的字节是base 16 numerical表示(十六进制)。...我们的64个字节十六进制字符串变成32个8位整数,效果是这样: ? 你可以通过使用这个转换器来看这些不同的表示。 现在,你就有一个符合要求并且已经格式化了的消息哈希和签名表示,“你可以作弊了”。...例如: Bit-Wasp/secp256k1-php phpecc CryptoCurrencyPHP 我最终使用了所有三个库的组合,我喜欢知道我在使用什么,并且基本上(至少)理解我正在向服务器推送什么
它有啥特点: 1,根据任意长度的消息计算出固定长度的散列值。 2,能够快速计算出散列值。 3,输入消息不同,散列值也不同。 4,单向性。通过散列值无法还原出消息。 它有啥应用: ?...数字签名用于是指计算出消息的散列值,然后对其签名。 一次性口令,常用于服务器对客户端的合法性认证,通过使用散列函数保证口令在通信链路上只传输一次,即使泄露了口令,也无法使用。 有那些单向散列函数呢?...看一看keccak的设计思路吧: 先看一看Hash(n, M, N, H)参数 散列位大小 (n)是指SHA3的散列值长度有224、256、384、512四种。 消息文本M:输入消息。...将输入分组1,与初始值为0的内部状态的r个比特进行异或运算,其结果作为函数f的输入值。 将函数f的输出值r个比特再与输入分组2进行异或。反复执行,直到最后一个输入分组,结束吸收阶段,进入挤出阶段。...2,函数keccak内部状态是一个三维比特数组,5*5*b个比特组成的数组,这个参数就是b,也就是内部状态的比特长度。 SHA3采用的b=1600,1600是25的整数倍(2的6次方64倍)。
AES 对称加密的算法介绍挺多的,对这一块还不是特别理解的小伙伴可自行百度,这里我推荐一篇AES加密算法的详细介绍与实现,讲的还是蛮详细的~ 具体实现 其实搞懂了是怎么一回事,做起来还是挺简单的,因为库都是现成的...,我们只需要会用就好啦,这里我在推荐一篇理解AES加密解密的使用方法,加深大家对 AES 算法的理解~ 这里我以 Vue 作为例子,其他的也就大同小异了~ 要用 AES 算法加密,首先我们要引入 crypto-js...,crypto-js 是一个纯 javascript 写的加密算法类库 ,可以非常方便地在 javascript 进行 MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES...key 是密钥 ,iv 是密钥偏移量,这个一般是接口返回的,为了方便,我们这里就直接在这里定义了。...值得注意的是密钥的长度,由于对称解密使用的算法是 AES-128-CBC算法,数据采用 PKCS#7 填充 , 因此这里的 key 需要为16位!
加密算法介绍 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,经常使用的算法包含: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。...散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。...加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出不论什么部分的原始信息。不论什么输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。...散列还应该是防冲突的,即找不出具有同样散列结果的两条信息。具有这些特性的散列结果就能够用于验证信息是否被改动。...使用强行技术,产生不论什么一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操作,而对SHA-1则是2160数量级的操作。这样,SHA-1对强行攻击有更大的强度。
什么是非对称加密 非对称加密算法需要两个密钥:publickey和privatekey。如果用公钥对数据进行加密,只有用对应的私钥才能解密。...因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。...签名的生成 •有原始数据对其进行哈希运算-> 散列值 •使用非对称加密的私钥对散列值加密 -> 签名 •将原始数据和签名一并发送给对方 签名的验证 •接受数据 1 原始数据 2 数字签名 •数字签名,...需要使用公钥解密,得到散列值 •对原始数据进行hash运算,得到新的散列值 •散列值进行比对 go实现Rsa数字签名 使用rsa生成密钥对 •生成密钥对 •序列化 •保存到磁盘文件 ?...使用私钥对数字签名 ? 使用公钥进行签名认证 ? 结果展示 ? GitHub https://github.com/potaxie/go-crypto 本文作者:potaxie
加密算法介绍 HASH Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。...这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。...HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值.也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系 MD5 什么是MD5算法...MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位的散列值(hash value),用于确保信息传输完整一致...MD5不可逆的原因是其是一种散列函数,使用的是hash算法,在计算过程中原文的部分信息是丢失了的。 MD5用途 防止被篡改: 比如发送一个电子文档,发送前,我先得到MD5的输出结果a。
,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值 单向散列函数特点 根据任意长度的消息,计算出固定长度的散列值 计算速度快,能快速计算出散列值 具备单向性 消息不同,...散列值不同,具有雪崩效应 常见的几种单向散列函数 MD4,MD5:产生128bit的散列值,MD就是Message Digest的缩写 SHA-1:产生160bit的散列值 SHA-2:SHA-256...如果所有密钥都使用同一个,则结果与普通的 DES 是等价的 如果密钥1、密钥3相同,密钥2不同,称为 DES-EDE2 3、AES(Advanced Encryption Standard)...,消息的发送者使用公钥加密消息 为什么要用非对称加密解决密钥配送问题,而不是直接使用非对称加密传输消息呢?...,会是什么结果?
Tx.origin鉴权 简单介绍 tx.origin是Solidity的一个全局变量,它遍历整个调用栈并返回最初发送调用(或事务)的帐户的地址,在智能合约中使用此变量进行身份验证可能会使合约受到类似网络钓鱼的攻击...防御措施 tx.origin不应该用于智能合约的授权,这并不是说永远不应该使用tx.origin变量,它在智能合约中确实有一些合法的用例,例如,如果想要拒绝外部合约调用当前合约,他们可以通过require...,错误返回零。...,用于验证返回地址是否是之前用于签名的私钥对应的公钥地址,以太坊提供了web3.eth.sign方法来对数据生成数字签名,上面的签名数据可以通过下面的js代码获得: //初始化基本对象 var Web3...= require('web3'); var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); var
2.解决方案 加密方式 描述信息 解决的主要问题 常用算法 对称加密 指数据加密和解密使用相同的密钥 数据的机密性 DES, AES 非对称加密 也叫公钥加密,指数据加密和解密使用不同的密钥--密钥对儿...相关名词解释 HASH: 一般翻译为“散列”(也有直接音译为“哈希”),就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变成固定长度的输出,该输出值就是散列值。...这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一确认输入值。...16进制格式的字符串,该字符串中只包含16进制的数字,且长度是digest()返回结果长度的2倍,这可用邮件的安全交互或其它非二进制的环境中 hashlib模块使用实例: 我们以MD5算法为例获取字符串...2. hmac模块 hashmac模块简介: 前面说过,HMAC算法也是一种一种单项加密算法,并且它是基于上面各种哈希算法/散列算法的,只是它可以在运算过程中使用一个密钥来增增强安全性。
从以太坊得到一条交易信息的方式有两种: eth_getTransactionByHash: :返回指定交易对应的交易信息 eth_getTransactionReceipt :返回指定交易对应的收据信息...input,而getTransactionReceipts返回结果中包含logs。...Topics[1] :是address类型的from参数补齐64位结果(合约交易中真正的from地址) Topics[2] :是address类型to参数补齐64位的结果(合约交易中真正的to地址)...事件规则 topic[0] : keccak("Transfer(address,address,uint256)"),对事件的字符做keccak散列运算 topic[1] : address类型from...keccak散列运算 "0x000000000000000000000000b8262c6a2dcabd92a77df1d5bd074afd07fc5829", //当前交易from
那么,如果你遇到需要使用非对称加密的场景(比如多对一认证),我推荐你使用 ECC 算法。 ▌散列算法 散列算法应该是最常见到的密码学算法了。...很多场景下,我们使用散列算法并不是为了满足什么加密需求,而是利用它可以对任意长度的输入,计算出一个定长的 id。 作为密码学的算法,散列算法除了提供唯一的 id,其更大的利用价值还在于它的不可逆性。...在后续登录的过程中,我们如果计算出的用户提交的密码的散列值和你存储的散列值一致,就可以通过验证了。这样一来,任何人(即使是内部员工)都不知道用户真实的密码是什么,而用户也能够完成密码的校验。...除了刚才说的不可逆性,在密码学上,我们对散列算法的要求还有:鲁棒性(同样的消息生成同样的摘要)、唯一性(不存在两个不同的消息,能生成同样的摘要)。 经典的散列算法包括 MD5、SHA、国密 SM3。...将用户的密码“盐”进行拼接后,再进行散列计算,这样,即使两个用户设置了相同的密码,也会拥有不同的散列值。同时,黑客往往会提前计算一个彩虹表来提升暴力破解散列值的效率,而我们能够通过加“盐”进行对抗。
本章记录关于Java MD5withRSA加密算法的C#实现。由于C#不提供MD5withRSA的内置实现,所以必须依赖其他的第三方库。...这里提供一个简单的sample来演绎[bouncycastle]的加密库。 MD5withRSA是什么? 先使用MD5加密(不可逆转) 生成密文。 使用RSA继续加密 上一步的密文。 MD5是什么?...Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。...–来自百度百科 RSA是什么? RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。...–来自百度百科 MD5withRSA 的使用场景 如果你在百度上搜索 MD5withRSA 恐怕搜到最多的就是关于支付的。对的,这个加密算法常用与支付阶段。主要用途是防篡改。
1 以太坊的前端 API1.1 Web3.js地址:安装:npm install web3使用方法:// In Node.jsconst Web3 = require('web3');const web3...web3 = new Web3('ws://localhost:8546');使用举例:web3.eth.getAccounts().then(console.log);1.2 Ethereumjs以太坊的实用程序功能集合...,如ethereumjs-util和ethereumjs-tx,github:安装:npm install ethereumjs-util使用方法:import assert from 'assert'import...然后,作为合约的创造者——即“主席”,我们将为每个选项提供一个简称为“winningProposal()”的函数,用于返回获得最多投票的提案。...在投票时间结束时,“winningProposal()”函数会返回获得最多投票的提案,从而实现电子投票的功能。
前言 MD5是加密算法吗?为什么?什么是加盐处理? HTTP、HTTPS协议的区别? TLS技术的工作原理? HTTPS是如何加密的?...密钥a、密钥b是拥有一定数学关系的一组密钥 密钥b:私钥自己使用,不对外公开 密钥a:公钥给大家使用,对外公开 散列算法 散列函数又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法...散列算法安全性 拿到后台密码库数据(拖库) 了解哈希散列算法 自身拥有庞大的哈希散列结果数据 加盐过程: 指在加密之前,让明文字符和自定义字符进行组合加密,攻击的人也不知道原本自定义的字符是什么,这样破解就困难很多了...所以,从严格意义来说,哈希散列算法不能算加密算法,因为哈希散列是单向的,不具备逆向解密的能力。...数字证书是可信任组织颁发给特定对象的认证 使用非对称加密算法来生成对称密钥 为什么要使用对称密钥加密,而不是非对称加密?
领取专属 10元无门槛券
手把手带您无忧上云