首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏专注于主流技术和业务

    Scrypt算法

    Scrypt算法简介 Scrypt是内存依赖型的POW算法,莱特币采用此算法。第一个使用Scrypt算法的数字货币是Tenebrix,而后该算法被莱特币使用。 李启威说明了莱特币所使用的挖矿算法为数字货币Tenebrix所使用的Scrypt算法,是一种符合PoW共识机制的算法。 Scrypt算法过程中也需要计算哈希值,但是,Scrypt计算过程中需要使用较多的内存资源。 scrypt没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。 后来有人在SCRYPT的基础上稍作修改形成Scrypt –N算法,改进思路都一样,都是追求更大的内存消耗和计算时间,以有效阻止ASIC专用矿机。

    1.7K30发布于 2018-09-10
  • 来自专栏程序那些事

    密码学系列之:加密货币中的scrypt算法

    scrypt算法 scrypt是一种密码衍生算法,它是由Colin Percival创建的。使用scrypt算法来生成衍生key,需要用到大量的内存。 scrypt算法就是为了解决这样的问题出现的。 scrypt算法详解 scrypt算法会生成非常大的伪随机数序列,这个随机数序列会被用在后续的key生成过程中,所以一般来说需要一个RAM来进行存储。 这就是scrypt算法需要大内存的原因。 接下我们详细分析一下scrypt算法,标准的Scrypt算法需要输入8个参数,如下所示: Passphrase: 要被hash的输入密码 Salt: 对密码保护的盐,防止彩虹表攻击 CostFactor ∥Y2r−1 scrypt的使用 Scrypt被用在很多新的POW的虚拟货币中,比如Tenebrix、 Litecoin 和 Dogecoin。感兴趣的朋友可以关注一下。

    2.3K40发布于 2021-10-14
  • 来自专栏Java与Android技术栈

    Scrypt 不止是加密算法,也是莱特币的挖矿算法

    2016年,scrypt算法发布在RFC 7914。scrypt的简化版被用在数个密码货币的工作量证明(Proof-of-Work)上。 Scrypt 官网地址: https://www.tarsnap.com/scrypt.html Scrypt 算法 Java 的实现 /** * Pure Java implementation of the scrypt = new byte[0]; try { scrypt = Scrypt.scrypt(password,salt,131072,8,1,32); github地址:https://github.com/fengzhizi715/Scrypt_jni 总结 上面整理了 Scrypt 的两种实现方式,如果对于安全性要求很高的密码,可以采用 Scrypt

    1.2K40发布于 2018-08-24
  • 来自专栏丑胖侠

    区块链开发(六)truffle使用入门和testrpc安装

    /build/Release/scrypt' at Function.Module. (1)通过异常并检查依赖,发现缺少scrypt依赖。 于是,先安装: sudo apt install scrypt (2)安装之后发现依然有异常出现,通过vi命令查看编辑中提示的文件: /home/zhuzs/app/nodejs/node-v6.9.1 然而在同级目录下却有scrypt程序。 /build/Release/scrypt 改为: scrypt 重新执行testrpc,执行成功,显示结果如下图。

    78130编辑于 2022-05-06
  • 来自专栏编舟记

    创建数字钱包(零)KDF 密钥派生算法

    Scrypt (Memory-Hard algorithm) Scrypt 也是一种 password-base KDF 算法,比起 PBKDF2 需要消耗更多的资源,从而有效防止了专有硬件 ASIC/ Scrypt 内部用的还是 PBKDF2 算法,不过内部会长时间地维护一组比特数据,这些数据会在生成复杂的 salt 的过程中反复加密(Salsa20,一种流密码[2])得到。 网上流行说,以太坊的PoW共识算法是利用Scrypt实现的,但事实上,以太坊自己实现了一套哈希算法,叫做Ethash[3]. 区别 一言以蔽之,PBKDF2是算力型,而Scrypt是资源消耗型的。 Both PBKDF2 and scrypt are key derivation functions (KDFs) that implement key stretching by being deliberately The difference is that scrypt is also designed to require a large (and adjustable) amount of memory to

    3.7K30发布于 2019-02-26
  • 来自专栏超级架构师

    区块链101:莱特币和比特币的区别是什么?

    然而,Litecoin使用的是scrypt算法,它最初被命名为s-crypt,但发音为“script”。该算法融合了SHA-256算法,但它的计算要比在比特币上的SHA-256更加序列化。 Scrypt偏爱大量的高速RAM,而不是单纯的处理能力。因此,scrypt被称为“记忆难题”。 使用scrypt的后果意味着,在litecoin(和其他scrypt货币)中,并没有太多的“军备竞赛”,因为这一算法目前还没有ASIC技术。 这些设备可以处理scrypt所需要的计算,并且可以使用内置在自己的电路板上的快速内存。 曾经有一段时间,人们可以使用GPU挖掘比特币,但ASICs使这种方法不值得付出努力。

    1.7K130发布于 2018-04-10
  • 来自专栏Java3y

    漫话:将密码明文保存在数据库是真的low!

    还有很多算法也可以有效抵御彩虹表,常见的有bcrypt、scrypt等。 ? ? scrypt是由著名的FreeBSD黑客 Colin Percival为他的备份服务 Tarsnap开发的。 scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利用彩虹表进行暴力攻击更加困难。scrypt没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。 但是,scrypt在算法层面只要没有破绽,它的安全性应该高于PBKDF2和bcrypt。 Java中使用scrypt 有一个Java实现的scrypt工具类库(https://github.com/wg/scrypt )可以直接使用。

    1.9K40发布于 2019-08-27
  • 来自专栏算法协议

    Golang实现常用的Hash摘要

    ScryptScrypt 是一种基于密码学的哈希算法,比特币中的挖矿算法也使用了 ScryptScrypt 可以将任意长度的数据转换为固定长度的哈希值,但是计算速度较慢,需要更多的计算资源。 Scrypt// Scrypt - func Scrypt(s string) string { salt := []byte("salt") key, _ := scrypt.Key([]

    1.2K81编辑于 2023-07-13
  • 来自专栏苦逼的码农

    如何给女朋友解释为什么12306会用户信息泄露

    还有很多算法也可以有效抵御彩虹表,常见的有bcrypt、scrypt等。 ? ? scrypt是由著名的FreeBSD黑客 Colin Percival为他的备份服务 Tarsnap开发的。 scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利用彩虹表进行暴力攻击更加困难。scrypt没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。 但是,scrypt在算法层面只要没有破绽,它的安全性应该高于PBKDF2和bcrypt。 Java中使用scrypt 有一个Java实现的scrypt工具类库(https://github.com/wg/scrypt )可以直接使用。

    1.9K10发布于 2019-09-16
  • 来自专栏PHP在线

    如何安全存储秘密?

    四、scrypt scrypt是由著名的FreeBSD黑客 Colin Percival为他的备份服务 Tarsnap开发的。 scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利用彩虹表进行暴力攻击更加困难。scrypt没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。 但是,scrypt在算法层面只要没有破绽,它的安全性应该高于PBKDF2。 五、请使用bcrypt!请使用bcrypt!请使用bcrypt!

    2.7K70发布于 2018-03-08
  • 来自专栏Rust语言学习交流

    【Rust 日报】 2020-02-10 CURL 支持 RUSTLS

    RustCrypto 发布 password-hash crate 此 crate 提供针对密码的 traits 和类型,使用这个 crate 的 crates 有: argon2 pbkdf2 scrypt hash,但是可以一次性验证,代码如下: use password_hash::PasswordHash; use argon2::Argon2; use pbkdf2::Pbkdf2; use scrypt ::Scrypt; let hash_string = load_hash_string_for_user(...); // e.g. password hash"); // Trait objects for algorithms to support let algs = &[Argon2::default(), Pbkdf2, Scrypt

    49710发布于 2021-03-15
  • 来自专栏深入浅出区块链技术

    以太坊钱包开发系列2 - 账号Keystore文件导入导出

    而在Keystore中,是用的是Scrypt算法,用一个公式来表示的话,派生的Key生成方程为: DK = Scrypt(salt, dk_len, n, r, p) 其中的 salt 是一段随机的盐, Litecoin 就使用 scrypt 作为它的 POW 算法 实际使用中,还会加上一个密码进行计算,用一张图来表示这个过程就是: ? kdf: 指定使用哪一个算法,这里使用的是 scrypt。 kdfparams: scrypt函数需要的参数 mac: 用来校验密码的正确性, mac= sha3(DK[16:32], ciphertext) 下面一个小节单独分析。 我们来完整梳理一下 Keystore 文件的产生: 使用scrypt函数 (根据密码 和 相应的参数) 生成秘钥 使用上一步生成的秘钥 + 账号私钥 + 参数 进行对称加密。

    2.8K22发布于 2018-12-25
  • 来自专栏全栈程序员必看

    python实现HMAC算法与应用[通俗易懂]

    Program : HMAC In this program, you are required to invoke the scrypt algorithms that are implemented the password into byte array, with utf-8 encoding Read the salt byte array as a hex string Invoke the scrypt string salt_str: str = input("input the salt:") salt_bytes: bytes = bytes.fromhex(salt_str) # Invoke the scrypt with parameters n = 4 ,r = 8 ,p = 16 n: int = 4 r: int = 8 p: int = 16 result_bytes: bytes = hashlib.scrypt

    59020编辑于 2022-11-16
  • 来自专栏KuPay

    KuPay:保障数字钱包安全的神秘力量-图片哈希

    区 块 链 中 哈 希 算 法 的 现 状 哈希算法包含多种计算方式,区块链领域常用的有scrypt算法和SHA-256,我们熟悉的比特币使用的是SHA-256算法,而莱特币(Litcoin)使用的则是 scrypt算法,因此这两种算法成为了区块链领域的主流算法之一。 S c r y p t 算 法 2011年,使用Scrpyt算法的莱特币(Litecoin)横空出世,到今天为止scrypt算法都被后面的很多“山寨币”沿用。 Scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利用rainbow table进行暴力攻击更加困难。 scrypt没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。某种程度上面scrypt在算法层面的安全性被认为高于PBKDF2和bcrypt。

    97920发布于 2018-09-06
  • 来自专栏Kirito的技术分享

    如何存储用户的密码才能算安全?

    其中就包括:Bcrypt,PBKDF2,Scrypt,Argon2。为什么这些 hash 算法能保证密码存储的安全性?因为他们足够慢,恰到好处的慢。这么说不严谨,只是为了给大家留个深刻的映像:慢。 Bcrypt,Scrypt,PBKDF2 这些慢 hash 算法是目前最为推崇的 password encoding 方式,好奇心驱使我思考了这样一个问题:慢 hash 算法真的安全吗? 然后…看了 Scrypt 的相关资料之后我才意识到这个坑有多深。一个熟悉又陌生的词出现在了我面前:FPGA(现场可编程逻辑门阵列),这货就比较厉害了。 Scrypt 比 Bcrypt 额外考虑到的就是大规模的自定义硬件攻击 ,从而刻意设计需要大量内存运算。 你会不会担心密码泄露后,{bcrypt},{pbkdf2},{scrypt},{sha256} 此类前缀会直接暴露密码的编码方式?其实这个考虑是多余的,因为密码存储的依赖算法并不是一个秘密。

    1.7K30发布于 2018-07-25
  • 来自专栏芋道源码1024

    该如何设计你的 PasswordEncoder?

    其中就包括:Bcrypt,PBKDF2,Scrypt,Argon2。为什么这些 hash 算法能保证密码存储的安全性?因为他们足够慢,恰到好处的慢。这么说不严谨,只是为了给大家留个深刻的映像:慢。 Bcrypt,Scrypt,PBKDF2 这些慢 hash 算法是目前最为推崇的 password encoding 方式,好奇心驱使我思考了这样一个问题:慢 hash 算法真的安全吗? 然后…看了 Scrypt 的相关资料之后我才意识到这个坑有多深。一个熟悉又陌生的词出现在了我面前:FPGA(现场可编程逻辑门阵列),这货就比较厉害了。 Scrypt 比 Bcrypt 额外考虑到的就是大规模的自定义硬件攻击 ,从而刻意设计需要大量内存运算。 你会不会担心密码泄露后,{bcrypt},{pbkdf2},{scrypt},{sha256} 此类前缀会直接暴露密码的编码方式?其实这个考虑是多余的,因为密码存储的依赖算法并不是一个秘密。

    1.8K10发布于 2019-10-29
  • 来自专栏TechBlog

    python实现HMAC算法与应用

    Program : HMAC In this program, you are required to invoke the scrypt algorithms that are implemented string salt_str: str = input("input the salt:") salt_bytes: bytes = bytes.fromhex(salt_str) # Invoke the scrypt with parameters n = 4 ,r = 8 ,p = 16 n: int = 4 r: int = 8 p: int = 16 result_bytes: bytes = hashlib.scrypt

    52410编辑于 2022-07-20
  • 来自专栏北京马哥教育

    如何安全的存储密码

    3) scrypt   scrypt是由著名的FreeBSD黑客 Colin Percival为他的备份服务 Tarsnap开发的。    和上述两种方案不同,scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利用rainbow table进行暴力攻击更加困难。 scrypt没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。但是,scrypt在算法层面只要没有破绽,它的安全性应该高于PBKDF2和bcrypt。

    3.5K60发布于 2018-05-02
  • 来自专栏区块链入门

    第三十二课 如何在Windows环境搭建REMIX本地环境,访问本地目录?1,摘要2,参考文档完成NODE.JS的安装3,命令行安装REMIX IDE4,启动本地IDE5,在REMIX上访问本地文件夹

    Please use tar module instead: https://npmjs.com/tar > scrypt@6.0.3 preinstall C:\Program Files\nodejs \node_global\node_modules\remixd\node_modules\scrypt > node node-scrypt-preinstall.js C:\Program Files \nodejs\node_global\remixd -> C:\Program Files\nodejs\node_global\node_modules\remixd\bin\remixd > scrypt @6.0.3 install C:\Program Files\nodejs\node_global\node_modules\remixd\node_modules\scrypt > node-gyp rebuild C:\Program Files\nodejs\node_global\node_modules\remixd\node_modules\scrypt>if not defined

    6.6K41发布于 2018-12-19
  • 来自专栏TechBlog

    python实现模拟身份验证服务器综合系统设计

    self.password_hash: bytes = in_password_hash self.salt: bytes = in_salt self.method: str = 'scrypt n: int = 4 r: int = 8 p: int = 16 password_hash_ver: bytes = hashlib.scrypt n: int = 4 r: int = 8 p: int = 16 # Hash encryption password_hash: bytes = hashlib.scrypt

    83210编辑于 2022-07-20
领券