首页
学习
活动
专区
圈层
工具
发布

我仅用50 行 JavaScript 代码从头构建区块链,向你介绍区块链的工作原理

今天的文章中,我将通过仅使用 50 行 JavaScript 代码从头构建区块链,向您展示区块链的工作原理。 在我们开始之前,我想指出,如果您了解一些基本的编程知识,这篇文章会更容易理解。...前一个哈希值:这会跟踪前一个块 ID。现在,你只需要知道我们使用这个值在当前块和前一个块之间形成一个链。我将在本文后面解释为什么这个值很重要。 时间戳:这告诉我们区块何时被创建。...该函数基本上根据之前的哈希值、当前数据、当前时间戳和工作量证明的组合生成一个哈希值。 我们使用来自 crypto-js npm 包的哈希函数。这个包基本上允许我们使用几种散列方法。...我们在本教程中使用安全哈希算法 256 (SHA 256)。如您所见,我们在文件顶部导入哈希。 我们来看看 Block 类的最终功能。mine功能。...这在现实生活中是不可能实现的! 总结 以上就是我所要分享的文章内容。我希望对您想更多地了解区块链会有所帮助。如果您觉得今天内容对您有所帮助,也请您分享给您的朋友,也许也可以帮助到他。

1.4K20

前端攻城狮都要懂的加密算法之总结,一篇文章教你搞懂加密。

,我们只需要会用就好啦,这里我在推荐一篇理解AES加密解密的使用方法,加深大家对 AES 算法的理解~  具体实现: 这里我以  Vue 作为例子,其他的也就大同小异了~ 1、要用 AES...、RIPEMD-160 哈希散列,进行 AES、DES、Rabbit、RC4、Triple DES 加解密,我们可以采用 npm install crypto-js --save 进行下载安装,也可以直接去...公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。  ...这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。 ...前者的意思是可能存在有两段明文散列以后得到相同的结果,后者的意思是如果我们散列特定的数据,得到的结果一定是相同的。

2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    crypto-js aes 加解密

    AES 对称加密的算法介绍挺多的,对这一块还不是特别理解的小伙伴可自行百度,这里我推荐一篇AES加密算法的详细介绍与实现,讲的还是蛮详细的~ 具体实现 其实搞懂了是怎么一回事,做起来还是挺简单的,因为库都是现成的...,我们只需要会用就好啦,这里我在推荐一篇理解AES加密解密的使用方法,加深大家对 AES 算法的理解~ 这里我以 Vue 作为例子,其他的也就大同小异了~ 要用 AES 算法加密,首先我们要引入 crypto-js...,crypto-js 是一个纯 javascript 写的加密算法类库 ,可以非常方便地在 javascript 进行 MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES...,分别是用于加密和解密,这里我将它放在了 utils 文件夹下,命名为 secret.js ,其具体代码如下: const CryptoJS = require('crypto-js');...,剩下的就是展示一下如何使用咯~ 示例 这里我定义了一个 index.vue 用来展示数据加解密的操作~ 加密操作: 假设我们现在要给后端发送一段文字,暂且定义为 This is a clear text

    8.1K30

    保护个人隐私数据很重要 !!!

    让我来为大家介绍它们: 秘迹搜 秘迹App 当然,接下来我也会从技术方案上为大家阐述明白: 为什么秘迹App是安全的 我们的价值观和逻辑是什么 我们选择了什么样的密码学体系方案来保证你的数据安全性 秘迹搜...App 的数据存储方式,那么比特币钱包就是一个很好的参照,在 秘迹App 中你的全部数据使用 AES-256 加密 keepass 2.x 格式数据库文件的方式来存储,在这个数据库文件中不仅保存着你的账户密码...对于前端的同学来说,在设计你的 Web 应用系统时也应该多加考虑,防止数据被篡改。在这里我引用 google crypto-js 为前端的同学展示一下该如何使用 Sha256 和 Hmac。...秘迹App 的同学们,先用 保险箱 功能把你的账户密码管理起来,将密码修改为不同的强密码,尽可能的减少被人撞库的可能性,试想一下如果你使用的一个服务因为被拖库,正好你使用的另一项服务比如隐私相册使用了相同的密码...为了你能方便迁移至秘迹App,在我们在 Chrome 插件中也贴心提供了账户密码迁移功能,你可以导入已经导出的.csv文件: 对称密钥算法又称为对称加密,这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥

    2.1K10

    100台机器上海量IP如何查找出现频率 Top 100?

    ip是32位的,也就是最多就 232 个, 常见的拆分方法都是 哈希: 把大文件通过哈希算法分配到不同的机器 把大文件通过哈希算法分配到不同的小文件 上面所说,一台机器的内存肯定不能把所有的...这样就可以得到每台机器上的 Top 100。 不同机器的 Top 100 再进行 加和 并 排序,就可以得到Top 100 的ip。 为什么加和?...解决方案: 先用 hash 算法,把 ip 按照 hash 值哈希到不同的机器上,保证相同的ip在相同的机器上,再对每个机器上的ip文件再hash成小文件,这个时候再分别统计小文件的出现频次,用最小根堆处理...,不同文件的结果排序,就可以得到每台机器的top 100,再进行不同机器之间的结果排序,就可以得到真正的 top 100。...剑指Offer全部题解PDF 2020年我写了什么? 开源编程笔记

    35820

    Golang 实现与 crypto-js 一致的 AES 简单加解密

    )好嘛,padding还有不同的方式:Zero padding、ANSI X.923、PKCS7… js 常用 crypto-js 进行加密解密操作(我这边还想有个特别需求能保证 js 加密一致) 上代码...// 使用的 IV: 03ac674216f3e15c 对,这就是我想要的,输入需要加密的内容和 key,给我出加密后的结果就好 crypto-js 实现 解密也是类似的,这里我就不重复代码了...再次从使用者的角度出发,我既然已经提供了一个 key 去加密了,为什么还要提供一个与 key 类似的东西去加密呢?就相当于我需要记住两个密码,很麻烦。...padding 还有不同的方式:Zero padding、ANSI X.923、PKCS7… 这里,类似的,由于 crypto-js 默认使用 PKCS7 所以就用它了。...最后要提醒一下,虽然我使用了 crypto-js 进行加密,但由于是业务需要,如果你在使用的话一定要注意不要将 key 给前端页面进行解密,毕竟 AES 是对称加密。

    3.8K20

    【详解】Java实现与JS相同的Des加解密算法

    Java实现与JS相同的DES加解密算法在开发过程中,我们常常需要在不同的编程语言之间进行数据的加密和解密操作。...如果密钥长度不正确,可能会导致加密失败。字符编码:在处理字符串时,注意字符编码问题,确保在Java和JavaScript中使用相同的字符编码。...尽管DES算法的安全性已不如从前,但在某些特定场景下,了解如何在不同语言间实现相同的加密逻辑仍然是非常有用的。希望对你有所帮助!当然可以!...下面我将提供一个Java和JavaScript的示例,展示如何实现相同的DES加解密算法。Java 实现首先,我们需要在Java中实现DES加解密。...加密模式:确保使用相同的加密模式,例如ECB(Electronic Codebook)。填充方式:确保使用相同的填充方式,例如PKCS7。

    42410

    【开源三方库】crypto-js加密算法库的使用方法

    它提供了一套完整的加密工具,满足不同安全需求。常用加密算法的使用场景MD5MD5是一种广泛使用的散列函数。它被用于各种安全应用,也通常用于校验文件的完整性。...SHA-512在很大程度上与SHA-256相同,但在64位计算机上SHA-512比SHA-256更快(因为它们在内部使用64位算术);在8位,16位和32位计算机上,SHA-256比SHA-512更快。...从这些应用来看,RC4构成了当今网络通信的非常重要的部分,因此这个算法非常重要。Demo效果使用示例接下来将通过具体实例介绍crypto-js的使用方法与个性化配置。1. ...唯一性 --- 不同原始数据会有不同的 MD5 值md5算法在本库的使用://第一步在需要使用到的页面,导入CryptoJS import { CryptoJS } from '@ohos/crypto-js...写在最后如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;关注小编,同时可以期待后续文章ing,不定期分享原创知识;想要获取更多完整鸿蒙最新学习知识点

    1.8K10

    SHA-1被破解始末

    大概是在2017年 2月23日 CWI Amsterdam 和 Google 宣布一个对sha1实践地冲突攻击,他们说,两个不同的pdf文件却产生了相同的sha hash。...然而,如果哈希算法有一些缺陷,如SHA-1,一个资金充足的攻击者可以进行冲突。 攻击者然后可以使用这种冲突来欺骗依赖于哈希的系统接受恶意文件代替其良性对应。 例如,两个保险合同具有完全不同的术语。...任何遵守CA /浏览器论坛法规的认证机构不允许再颁发SHA-1证书。 此外,要求证书机构在序列号字段内插入至少64位的随机性。 如果正确实施,这有助于防止风险。 我的浏览器会向我显示警告吗?...GIT强烈依赖SHA-1来识别和完整性检查所有文件对象和提交。 基本上可以创建两个具有相同的头提交哈希和不同内容的GIT存储库,例如良性的源代码和后代的。 攻击者可以选择性地为目标用户提供服务。...如何修补/升级我的系统? 考虑使用更安全的替代品,例如SHA-256或SHA-3。 如何检测此攻击? 您可以使用上面的在线工具提交文件,并让他们检查对SHA-1的密码分析冲突攻击。

    6.6K80

    关于哈希(散列)函数你应该知道的东西

    这听起来很神秘、很专业,甚至可能有点乏味,但是, 在这里,关于什么是哈希函数以及它们为什么对你很重要,我会作出一个简洁的解释。...比如,哈希函数可以用于验证 你 下载的文件副本的每一个字节是否和 我 下载的文件一样。你下载一个 Linux 的 ISO 文件或者从 Linux 的仓库中下载软件时,你会看到使用这个验证过程。...然后我就可以确信,我驱动器上的这个可执行文件和 Apache 基金会网站上发布的文件是一模一样的。...这就是哈希函数难以发生碰撞(或者至少是 很难通过计算得到碰撞)这个性质的重要之处。如果黑客能将真实文件用哈希值相同的文件轻易的进行替换,那么这个验证过程就毫无用处。...抗碰撞性(collision resistance):很难得到任意两个可以产生相同哈希值的消息。 抗碰撞性 和 抗次原像性 也许听上去是同样的性质,但它们具有细微而显著的不同。

    1.2K20

    HarmonyOS 开发实践——基于@ohoscrypto-js实现加解密工具箱

    @ohos/crypto-js简介@ohos/crypto-js是一个根据crypto-js库移植的 鸿蒙 三方库,适配源库4.2.0版本,提供了一系列加密算法和安全工具,主要用于执行各种消息摘要计算和对称加解密操作...@ohos/crypto-js 与 cryptoFramework 规格对比@ohos/crypto-js不支持国密算法和非对称加解密算法,国密算法可以使用三方库 @yyz116/sm-crypto 消息摘要算法...crypto-js支持的加密模式:CBC、ECB、CFB、CTR、OFB。...当不传入模式、填充、偏移量时,会默认使用CBC加密模式、Pkcs7填充方式和一个随机生成的偏移量。ECB模式不需要偏移量。...,我想邀请你帮我三个小忙:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;关注小编,同时可以期待后续文章ing,不定期分享原创知识;想要获取更多完整鸿蒙最新学习知识点,可关注B站:码牛课堂鸿蒙开发

    57320

    js计算出来的文件md5值跟java计算出来的不一致

    最近在项目中遇到了大文件分割上传问题,为了保证上传的文件的有效性需要确保分割的文件上传首先要成功,因此用到了md5加密,在js代码中上传文件之前将要上传的文件内容进行md5加密,然后作为其中一个参数传到后端服务器...,后端再收到文件后对文件进行同样的md5加密,然后将两个md5值对比,验证成功则人为文件分割块是正确的,然后保存,但是却遇到一个问题: 笔者最初使用的是jquery.MD5.js这个库进行加密,尝试对几个字符串加密后与...java端产生的相同,但是上传文件时却md5校验失败,最终发现问题出在下面: function uploadFile1(blob, index, start, end,fileSize) { var...最终由于jquery.md5插件与crypto-js兼容性问题,放弃jquery.md5插件使用crypto-js插件,相关部分代码见上面代码标红部分!...注:上面用到的crypto-js相关文件如下: crypto-js/core.js"> crypto-js/enc-base64

    3.9K20

    网友爆出苹果CSAM检测技术出现哈希冲突

    AsuharietYgvar则列举了这就是苹果所采用的算法的证据。 首先,模型文件的前缀是NeuralHashv3b-,与苹果的文件中的术语相同。...(https://www.apple.com/child-safety/pdf/CSAM_Detection_Technical_Summary.pdf) 其次,苹果对算法描述的细节也与Ygvar的发现相同...此外,如果调整图片的大小或压缩图片,这个脚本产生的哈希值几乎没有变化,这又和苹果的文件中描述的一样。 值得注意的是,不同设备生成的哈希值会有几位的差异。...通常来说,哈希算法具有以下特点: 相同的输入一定得到相同的输出; 不同的输入大概率得到不同的输出。...但是由于通过哈希函数产生的哈希值是有限的,当输入数据量达到一定的程度时,就会导致不同的数据在经过哈希函数处理之后产生相同的值。 这也就产生了哈希冲突。

    53420

    区块链技术中的Merkle树是如何实现优化Gossip协议的?

    反熵机制非常可靠,因为它确保最终所有站点的数据都会一致,但由于需要比较整个数据库内容,频繁使用会消耗大量资源。...那我们想一想:实在不行就别在日常的PingPang中传输大量数据了呗,改成哈希。两个不同的数据大概率哈希值也是不一样的(可能会存在哈希冲突)。 基于这种思路,那我们可以先传递数据的哈希值。...这样在Ping消息中我们只需要携带对应的上图中的这些节点哈希值。比如4个数据包我们就携带7个哈希值就好了。而当这些哈希都相同的时候,在Pong消息中我们也可以和ping消息一样就传递这些哈希值就好了。...在这里其实我们可以看到一个比较有趣的事情:他们构造的Merkle树和我们的并不完全一样: [他们的父节点使用两个子节点的哈希值异或得到的,而我们的是两个节点的哈希值相加之后再次哈希。]...以下就纯属我个人瞎猜了,大家听个乐子就好。 异或计算是一个很奇妙的计算,它可以相互计算求值。比如你用A和B异或得到C。那么你用C和B异或就可以得到A,用C和A异或就可以得到B。

    30810

    说唱有嘻哈 算法有哈希

    如果文件被病毒修改过,那么会得到一个完全不同的32位字符串,所以我们下载这个WOW.exe文件以后,只需要对这个文件使用MD5算法,看看校验码是否跟网站给出的MD5校验码一致,就可以判断该文件是否中毒。...相同的文件经过哈希算法的计算可以得到相同的编码,不同的文件,哪怕只有一点点的修改,都会得到一个完全不同的编码。 那么将上面的结论反过来,具有相同MD5编码的文件,一定是完全相同的文件吗?...答案是否定的,两个完全不同的文件得到的MD5编码可能相同,但是概率非常低,也就是说一个被病毒修改过的WOW.exe文件,有可能跟源文件的MD5一样,但是概率低到可以忽略不计,所以比对MD5是可靠的。...2.第二个情况就是两个不同的值,计算出相同的下标,这个时候会变成链表的存储方式,后来的数据在前面,数据中有一部分存了下一个数据(前一个数据的地址)。...HashMap的底层实现 HashMap在jdk1.8之前使用的是数组加链表的实现方式,而在1.8中,当链表长度超过8之后,会转为使用数组加红黑树的实现方式。

    64630

    data_structure_and_algorithm -- 哈希算法(上):如何防止数据库中的用户被脱库?

    Bit,最后得到的哈希值也大不相同; (3)散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小; (4)哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值。...和“我今天讲哈希算法”。这两个文本只有一个感叹号的区别。如果用 MD5 哈希算法分别计算它们的哈希值,你会发现,尽管只有一字之差,得到的哈希值也是完全不同的。...我们在实际的开发过程中,也需要权衡破解难度和计算时间,来决定究竟使用哪种加密算法。 应用二:唯一标识 我先来举一个例子。...具体的 BT 协议很复杂,校验方法也有很多,我来说其中的一种思路。 我们通过哈希算法,对 100 个文件块分别取哈希值,并且保存在种子文件中。我们在前面讲过,哈希算法有一个特点,对数据很敏感。...只要文件块的内容有一丁点儿的改变,最后计算出的哈希值就会完全不同。所以,当文件块下载完成之后,我们可以通过相同的哈希算法,对下载好的文件块逐一求哈希值,然后跟种子文件中保存的哈希值比对。

    1.5K20

    以图搜图:Python实现dHash算法

    这个功能最核心的东西就是怎么让电脑识别图片。 这个问题也是困扰了我,在偶然的机会,看到哈希感知算法。这个分两种,一种是基本的均值哈希感知算法(dHash),一种是余弦变换哈希感知算法(pHash)。...dHash是我自己命名的,为了和pHash区分。...对比方法用汉明距离:相同位置上的字符不同的个数。例如a.jpg和b.jpg对比 有11个位置的字符不一样,则汉明距离是11。汉明距离越小就说明图片越相识。超过10就说明图片很不一样。...一般都是在数据库里面进行计算,得到比较小的那些图片感知哈希值。 当然,实际应用中很少用这种算法,因为这种算法比较敏感。同一张图片旋转一定角度或者变形一下,那个哈希值差别就很大。...CNN-RNN-CTC 实现手写汉字识别 yolo3 检测出图像中的不规则汉字 同样是机器学习算法工程师,你的面试为什么过不了?

    1.7K20

    前端 实战项目·图片加解密二三事

    密码学中,分组(block)密码的工作模式(mode of operation)允许使用同一个分组密码密钥对多于一块的数据进行加密,并保证其安全性。...ECB 模式 ECB 模式(电子密码本模式:Electronic codebook)是最简单的块密码加密模式,加密前根据加密块大小(如 AES 为 128 位)分成若干块,之后将每块使用相同的密钥单独加密...加密时,明文中的微小改变会导致其后的全部密文块发生改变,而在解密时,从两个邻接的密文块中即可得到一个明文块。...每个使用 OFB 的输出块与其前面所有的输出块相关,因此不能并行化处理。然而,由于明文和密文只在最终的异或过程中使用,因此可以事先对 IV 进行加密,最后并行的将明文或密文进行并行的异或处理。...通过创建 XMLHttpRequest 请求访问加密图片链接,并设置 responseType 为 arraybuffer 便可得到加密后的图片流,然后将流转换为 base64,采用 crypto-js

    2.4K30

    Bloom Filter 的后继者?布谷鸟哈希与布谷鸟过滤器

    引子 之前我们聊过 LevelDB 中的布隆过滤器,它利用一组哈希函数和一块内存可以表示一个数据集,并支持对集合中数据条目的有无进行快速查询。...使用两个哈希函数和四路哈希桶。 cuckoo hash variant 可以证明,后者的桶的利用率会更高,感兴趣可以去看原论文[3]查看论证过程。...: 为了提高桶的利用率,使用多路哈希桶。...直观的,我有两种想法: 方法一:通过 h2(finger(x)) 计算出另外一个位置。但这样在计算第二个位置时,相当于将原数据空间强行压缩到了指纹空间,会损失很多信息,加大碰撞概率。...二是,如果两个不同值 x 和 y,恰巧满足 hash(x) == hash(y) && finger(x) == finger(y) 则会出现假阳性。理解假阳性,我们可以从哈希的本质出发。

    1.8K11
    领券