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

区块链技术详解和Python实现案例

去中心化"这个简单而重要的概念对银行、政府和市场等机构具有重大意义,可以说,任何依赖中央数据库作为核心竞争优势的企业或组织都可能受到区块链技术的挑战甚至颠覆。...我们将介绍公钥密码学、散列函数、区块链的“开采”和安全性。 2.1 公钥加密 公钥密码术(也称不对称密码术):公钥可以广播,而私钥只有所有者知道。...哈希函数可用于将任意大小的数据映射到固定大小的数据。哈希函数返回的值称为散列值,哈希函数通常用于通过检测重复记录来加速数据库查找,它也广泛用于密码学。...密码哈希函数可以验证某些输入数据和给定的散列值之间的映射关系,但如果输入数据是未知的,则要想通过散列值反推出输入数据是非常困难的。...你可以使用下面的应用程序来模拟有3个区块的区块链。当你输入“Data”文本框或更改nonce值时,可以注意到下一个块的散列值和“Prev”值(前一个散列)的更改。

2.9K50

一文读懂 MD5 算法

消息摘要算法也被称为哈希(Hash)算法或散列算法。 任何消息经过散列函数处理后,都会获得唯一的散列值,这一过程称为 “消息摘要”,其散列值称为 “数字指纹”,其算法自然就是 “消息摘要算法”了。...3.2 信息保密 在互联网初期很多网站在数据库中以明文的形式存储用户的密码,这存在很大的安全隐患,比如数据库被黑客入侵,从而导致网站用户信息的泄露。...使用上述方案,避免了在数据库中以明文方式保存密码,提高了系统的安全性,不过这种方案并不安全,后面我们会详细分析。 ?...用户密码经过 MD5 哈希运算后存储的方案至少有两个好处: 防内部攻击:因为在数据库中不会以明文的方式保存密码,因此可以避免系统中用户的密码被具有系统管理员权限的人员知道。...6.2 密码加盐 盐(Salt),在密码学中,是指在散列之前将散列内容(例如:密码)的任意固定位置插入特定的字符串。这个在散列中加入字符串的方式称为 “加盐”。

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

    公钥加密、加密Hash散列、Merkle树……区块链的密码学你知多少?

    Cipher密码:一种用于执行加密或解密的算法,通常是一组可履行的、定义明确的步骤。 【密码学】在以前是加密的同义词,即把信息从可读的格式转换为毫无意义的信息的过程。...大多数网站不会储存用户的原始密码,它们会储存用户密码的Hash散列,并在用户访问给定的站点并输入密码时,检查散列是否匹配。如果黑客入侵了他们的数据库,也只能访问不可逆的密码Hash散列。...来自区块999的数据作为Hash散列函数输出存在于第1000个区块中。然而,包含在区块999中的数据是区块998中数据的Hash散列,区块998中又包含了区块997中数据的Hash散列。...Merkle树(或称为Hash散列树)是一种使用加密Hash 散列函数来储存散列输出(而不是每个节点中的原始数据)的树。...每个叶子节点由其原始数据的加密Hash散列组成,而每个父节点(Parent Node)是其子节点Hash散列组合的Hash散列。

    1.7K11

    WordPress面试题

    然而,如果你知道用户密码的 MD5 散列值,并且想要手动修改密码,可以尝试以下步骤: 请注意,在进行任何更改之前,请务必备份您的 WordPress 站点,以防发生意外情况。...生成新密码的 MD5 散列值: 使用 MD5 哈希算法生成新密码的散列值。你可以使用在线工具或编程语言来执行此操作。...例如,如果你的新密码是new_password,你可以使用 PHP 的md5函数来生成散列值: 在实际环境中,请使用更强大的哈希算法,如 bcrypt。 更新数据库中的密码: 在wp_users表中,找到用户行并更新user_pass列的值为新的 MD5 散列值。...UPDATE wp_users SET user_pass = '新密码的MD5散列值' WHERE ID = 用户ID; 确保将“新密码的 MD5 散列值”替换为实际的 MD5 散列值,而“用户 ID

    1.5K40

    关于 Node.js 的认证方面的教程(很可能)是有误的

    当然,该示例的密码不会以任何方式散列,并且与本示例中的验证逻辑一起存储在明文中。在这一点上,甚至没有考虑到凭证存储。 让我们来 google 另一个使用 passport-local 的教程。...在数据库中存储未加密的密码重置令牌意味着如果数据库遭到入侵,那些令牌就是明文密码。使用加密安全的随机数生成器生成长令牌会阻止对重置令牌的远程强力攻击,但不会阻止本地攻击。...但是,如果攻击者通过 BSON 注入对数据库中的用户对象进行读取访问,或由于配置错误,可以自由访问 Mongo,这些令牌将非常危险了。...攻击者只需为每个用户发出密码重置,从 DB 读取未加密的令牌,并为用户帐户设置自己的密码,而不必经历使用 GPU 装备对 bcrypt 散列进行的昂贵的字典攻击过程。...错误三:API 令牌 API 令牌是凭据。它们与密码或重置令牌一样敏感。

    5.9K90

    最安全的PHP密码加密方法

    在PHP开发过程中,很多人PHP密码加密都是用的md5和sha1(包括sha256.......)...password_hash()加密后的值包括了“随机盐”+“密码散列“组合的值。当然生成这个值是通过了一定算法的,不要问为什么? 数据库只需要一个字段就可以存取“随机盐”+“密码散列“值。...我以前开发项目,为了保证不同用户用不同的盐,我数据库还用了两个字段,一个存密码散列值,另一个存盐的值。 密码验证简单,只需要用password_verify()函数验证即可!...> 以上例程的输出类似于:2y10 加密后的散列值存数据库 这样我们可以直接把上面加密后的值存入数据库,只需要一个字段。 password_verify() 验证密码是否和散列值匹配 用法示例: 密码的散列(hash) password_needs_rehash — 检测散列值是否匹配指定的选项 password_verify — 验证密码是否和散列值匹配 总结: 可能很多人不知道,password_hash

    4.4K40

    Nest.js 实践总结分享

    回复1,加入高级Node交流群 Nest.js 是一个现代的企业级 Node.js Web 框架,最近在使用 Nest.js 实践一些项目的总结了一些使用心得,也从中学到了很多东西,在这里总结下来和大家分享...当增强或增加一个 API 时,我们应该确保已经线上使用到该 API 的业务不受影响。简而言之,API 前缀是为了向后兼容。 2....例如,你可以创建一个文件夹名为 utils 来存储你的工具函数或 JSON 文件。通过将文件组织到模块文件夹中,会变得清晰,并且可以避免很多错误。...使用 Exclude 来隐藏不必要的数据 使用过滤器从数据库中获取的数据是很常见的。过滤器的整个目标是删除或格式化来自数据库的数据。这会导致很多垃圾逻辑,使代码变得更冗余。...最常见的用例与密码散列和获取全名有关,这时可以使用 getter 方法,但是要注意不要过度使用,避免给实体承担大量的业务逻辑。

    2.3K10

    Shiro框架学习,Shiro 编码加密

    5.2 散列算法 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如MD5、SHA等。...“admin”,即如果直接对密码进行散列相对来说破解更容易,此时我们可以加一些只有系统知道的干扰数据,如用户名和ID(即盐);这样散列的对象是“密码+用户名+ID”,这样生成的散列值相对来说更难破解。...Base64Format和HexFormat,对于有salt的密码请自定义实现ParsableHashFormat然后把salt格式化到散列值中; 2.4、hashFormatFactory用于根据散列值得到散列的密码和...如上方式的缺点是:salt保存在散列值中;没有实现如密码重试次数限制。...,将生成的密码及salt2存入数据库(因为我们的散列算法是:md5(md5(密码+username+salt2)))。

    1.3K20

    17年大盘点:区块链领域常见术语详析

    在比特币中,它们被设计为处理SHA-256散列问题以挖掘新的比特币。 6、比特币(Bitcoin)是一个众所周知的加密货币,基于POW区块链。...31、分布式账本(Distributed ledger)是分布在多个站点,国家或机构中的一种数据库。记录一个接一个地存储在连续分类账中。分布式账本数据可以通过“许可”或“不许可”来控制谁可以查看它。...54、工作量证明(Proof of Work)是一个将挖掘能力与计算能力联系起来的系统。块必须被散列,这本身就是一个简单的计算过程,但是在散列过程中增加了一个额外的变量,使其变得更加困难。...当一个块被成功散列时,散列必须花费一些时间和计算量。因此,散列块被认为是工作量的证明。 55、协议(Protocol)是描述如何传输或交换数据的正式规则集,特别是在整个网络中。...64、交易区块(Transaction block)是比特币网络上的交易集合,集合成一个块,然后可以将其散列并添加到区块链中。

    93960

    干货 17年大盘点:区块链领域常见术语详析

    在比特币中,它们被设计为处理SHA-256散列问题以挖掘新的比特币。 6、比特币(Bitcoin)是一个众所周知的加密货币,基于POW区块链。...31、分布式账本(Distributed ledger)是分布在多个站点,国家或机构中的一种数据库。记录一个接一个地存储在连续分类账中。分布式账本数据可以通过“许可”或“不许可”来控制谁可以查看它。...54、工作量证明(Proof of Work)是一个将挖掘能力与计算能力联系起来的系统。块必须被散列,这本身就是一个简单的计算过程,但是在散列过程中增加了一个额外的变量,使其变得更加困难。...当一个块被成功散列时,散列必须花费一些时间和计算量。因此,散列块被认为是工作量的证明。 55、协议(Protocol)是描述如何传输或交换数据的正式规则集,特别是在整个网络中。...64、交易区块(Transaction block)是比特币网络上的交易集合,集合成一个块,然后可以将其散列并添加到区块链中。

    1K60

    【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)

    本来想用数据库,例如轻量级的Access,但想了想,根据需求,只有用户名,密码需要保存,而且是单机版程序,只需保存管理员的账户信息。...所以这里用While循环依次读取XML中数据,遇到需求的节点,读取节点的内容。...简单的说,对于一个字符串,通过MD5计算其Hash值(散列值),有且只有一个。...例如我们将密码,MD5计算散列值后,将散列值保存在XML中,当用户登录时,输入的密码,经过同样的MD5算法计算,如果散列值与事先存储的一致,则证明信息正确,允许用户登录。   ...,对于输入的字符串,返回其MD5计算得到的散列值字符串。

    2K121

    Shiro加密

    比较常见的是,当注册时使用 MD5 散列算法对初始密码处理后存入数据库,而后每次登陆请求,对用户输入的密码也进行 MD5 散列后与数据库中的散列后的密码进行匹配,已达到加密的目的。...基本使用 MD5 加密 Shiro 对加密处理也提供了相应的 API,老规矩,先导入依赖: org.apache.shiro...将密码进行 md5 散列后输出结果: @Test public void testSimpleEncryption() { String password = "123456"; Md5Hash...如刚才我们的密码 123456,盐为 ShiroStudy,我们可以将盐加入到密码前或密码后,结果就是: 123456ShiroStudy,这时再进行 md5 加密: @Test public void...在 doGetAuthenticationInfo 中我们返回的 AuthenticationInfo 信息中,将盐加了进去。

    86630

    数据结构-Hash常见操作实践

    06.散列函数的场景散列函数是设计一个散列表的关键。它直接决定了散列冲突的概率和散列表的性能。不过,相对哈希算法的其他应用,散列函数对于散列算法冲突的要求要低很多。...散列函数中用到的散列算法,更加关注散列后的值是否能平均分布,也就是,一组数据是否能均匀的散列到各个槽中。...在散列函数中加入一个异或过程# 构造散列函数def hash(a): return (a % 8) ^ 5# 测试散列函数功能print(hash(233))print(hash(234))print...4.建立一个公共溢出区这种方法的基本思想是:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表。16.问题思考的答疑1.如何防止数据库中的用户信息被脱库?...三.针对字典攻击,我们可以引入一个盐(salt),跟用户密码组合在一起,增加密码的复杂度。四.最好对密码验证次数进行限时间段限制。2.在实际开发中,我们应该如何用哈希算法解决问题?

    97320

    一款数据库自动化提权工具

    请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。...工具简介 一款用Go语言编写的数据库自动化提权工具,支持Mysql、MSSQL、Postgresql、Oracle、Redis数据库提权、命令执行、爆破以及ssh连接等等功能。...  -isxp                 判断是否存在xp_cmdshell,存在则开启   -lhost string         vps   -list                 列目录...oracle数据库   -outfileshell         通过into outfile写入webshell   -path string          网站物理路径 -postgre...Postgre数据库   -pwd string           数据库密码   -re                   使用dbms_export_extension注入漏洞反弹shell

    84130

    密码加密方式

    使用CSPRNG生成一个长度足够的盐值 将盐值混入密码,并使用标准的加密哈希函数进行加密,如SHA256,再把哈希值和盐值一起存入数据库中对应此用户的那条记录 校验密码的步骤 从数据库取出用户的密码哈希值和对应盐值...,将盐值混入用户输入的密码,并且使用同样的哈希函数进行加密,比较上一步的结果和数据库储存的哈希值是否相同,如果相同那么密码正确,反之密码错误 加密部分代码: public class MD5Test...salt = "helen"; //散列次数 int hashIterations = 1024; //构造方法: //第一个参数:散列算法 //第二个参数:明文,原始密码...//第三个参数:盐,通过使用随机数 //第四个参数:散列的次数,比如散列两次,相当 于md5(md5('')) //这个加密的方法名不是乱写的,具体要看api,shiro提供了相当丰富的加密...有谁来对上联或下联? 在Web程序中,永远在服务器端进行哈希加密 让密码更难破解:慢哈希函数 PBKDF2、BCRYPT、SCRYPT曾经是最常用的三种密码Hash算法。

    2.4K30

    密码发展史以及常用编码算法介绍

    第一代密码:早期在设计软件或网站的时候,数据库存中存放用户名和密码大致是这样的 WeiyiGeek.第一代密码 可以看到,用户名和密码都是明文的形式存储在数据库中。...盐(Salt),在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。...(自维基百科) 答:散列函数(或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。...散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。 该函数将数据打乱混合,重新创建一个叫做散列值的指纹。...散列值通常用来代表一个短的随机字母和数字组成的字符串; 好的散列函数在输入域中很少出现散列冲突,在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。

    1.5K20

    为什么要在MD5加密的密码中加“盐”

    p=986 盐(Salt)在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。...当用户登陆的时候,会把用户输入的密码执行 MD5(或者 SHA1)后再和数据库就行对比,判断用户身份是否合法,这种加密算法称为散列。 严格地说,这种算法不能算是加密,因为理论上来说,它不能被解密。...,但必须是随机产生的,每个用户的 Salt 都不一样,用户注册的时候,数据库中存入的不是明文密码,也不是简单的对明文密码进行散列,而是 MD5( 明文密码 + Salt),也就是说: MD5('123...,但是由于密码都是加了 Salt 之后的散列,坏人们的数据字典已经无法直接匹配,明文密码被破解出来的概率也大大降低。...坏人们还是可以他们数据字典中的密码,加上我们泄露数据库中的 Salt,然后散列,然后再匹配。

    7.1K10

    聊一聊 Spring Security 密码加密方案 | 继续送书

    加密方案 密码加密我们一般会用到散列函数,又称散列算法、哈希函数,这是一种从任何数据中创建数字“指纹”的方法。...散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来,然后将数据打乱混合,重新创建一个散列值。散列值通常用一个短的随机字母和数字组成的字符串来代表。...好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。...但是仅仅使用散列函数还不够,为了增加密码的安全性,一般在密码加密过程中还需要加盐,所谓的盐可以是一个随机数也可以是用户名,加盐之后,即使密码明文相同的用户生成的密码密文也不相同,这可以极大的提高密码的安全性...,通过调用 BCryptPasswordEncoder 实例中的 encode 方法对密码进行加密处理,加密完成后将密文存入数据库。

    99540

    密码发展史以及常用编码算法介绍

    第一代密码:早期在设计软件或网站的时候,数据库存中存放用户名和密码大致是这样的 ? WeiyiGeek.第一代密码 可以看到,用户名和密码都是明文的形式存储在数据库中。...盐(Salt),在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。...(自维基百科) 答:散列函数(或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。...散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。 该函数将数据打乱混合,重新创建一个叫做散列值的指纹。...散列值通常用来代表一个短的随机字母和数字组成的字符串; 好的散列函数在输入域中很少出现散列冲突,在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。

    2.2K20
    领券