问题标签 [saltedhash]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
express - 如何在expressjs中使用passport-local.Strategy和crypto更改密码?
下面是我正在尝试的代码:index.js
并且在更改密码时它不起作用salt
和hash
。(将它们保存在数据库中)我不断收到setPassword
未定义的错误。另外我认为我也犯了代码错误。我想要使用 ' 更改密码的确切route
代码passport-local' Strategy
。
PS我也能够成功注册用户并登录。我只想给他更改密码的选项。
这是
Models (user.js)
我在用户注册开始时将密码保存为哈希和盐。
node.js - 如何使用护照身份验证和护照本地包在nodejs中添加“更改密码”功能?
这是authentication
我输入的护照代码passport.js
:
这是Schema code
我以 mongoose 查询的形式和使用salt
方式存储密码:hash
mongoDB
这是路线的auth.js
代码:Login
下面是password change route
我正在尝试execute
的可能不起作用的。我认为我需要在用户成功更改密码时将hash
andsalt
值更新到数据库中,但我不知道该怎么做。请帮忙!!!!!!!!!!!!!!!
它不工作/不将密码值更新到数据库中。我可能会做的可能原因和错误是什么?
perl - perl:使用 Digest::SHA3,使用网上的基本示例,输出的位值将其设置为 160,这表示哈希长度较弱(?)
我正在使用以下代码来学习/熟悉单向密码加密、加盐和使用它们来验证用户登录。
它有效,我将散列密码和盐值存储在我的数据库中,我可以检索两者并与纯文本密码进行比较,没问题。
我的问题是关于输出、它的安全性等。
这给出了类似于
当我获取该值并通过文本到字节转换器(在线)运行它时,我得到
我相信是160位。因为我对哈希和位真的很陌生,所以我很困惑。
我的想法是 SHA3 是 256 位及以上,那么为什么输出是 160 位。我什至可能误解了数据,甚至是我从研究中收集到的信息,所以请原谅我。
另外,我确信有更容易/更好/更强/任何方式来实现我的目标,但我认为我的问题更多的是理解位长度等。
另外,我读到最好使用等于输出字符长度的盐值长度,这意味着我的盐值将是 56 个字符,就像我上面的 SHA3 输出一样?我正在考虑使用一些基本的东西,例如
我确实读过一些可以给我真正随机盐值的模块,我对这些很感兴趣,但是我的 while 循环似乎正在完成任务,但是没有必要使用 56 个字符的盐值。
任何帮助和指导都会很甜蜜。谢谢!
- 产生
saltedhash - 散列密码时在哪里获得盐?
我了解到我需要使用盐,以便相同的密码不会显示在数据库中。
但是从哪里弄到盐呢?我不能全部使用一个,因为它无济于事。我可以生成一个随机的,但是每次哈希都会不同,没有人会重新登录。
所以我发现建议使用加密安全的 RNG 并将盐与用户一起存储。
但我必须为此把桌子变大。我不能使用相同的散列函数来散列用户名并将其用作密码的盐吗?它应该是密码安全的,因为我使用密码安全散列函数来散列密码,对吗?
spring - 如何将加盐 MD5 密码从 Spring Security 3.x 迁移到 5.x?
我有一个配置了 Spring Security 的 Spring 3 项目,并且想要迁移到最新的 Spring Security 5.4.6。在我的旧应用程序中,我使用 Spring 3 的 MD5 加盐解决方案(带有用户名)将散列/加盐密码存储在我的数据库中。即使Spring Security 5 提供了迁移现有 MD5 哈希密码的工具(例如在数据库中为所有哈希密码添加 {md5} 前缀以与新的 DelegatingPasswordEncoder 一起使用),它也没有提供迁移 MD5加盐密码的功能......
这是我的实际安全配置:
我的问题是:如何使用相同的配置迁移到 Spring Security 5,而不为我的用户重新生成新密码?
node.js - bcrypt 的数据和盐参数
我为我的每个订阅都使用了相同的模块,但我不知道为什么我有这个错误:代码 500 需要数据和盐参数。
也许有更新?但我找不到任何关于那个......也是我的代码
hash - 加盐,数据库中的每个表单元散列
我试图想出一个很好的策略,用每个单元格的 [半]独立盐对 SQL 表中的每一行的列值进行加盐。理想情况下,我更喜欢每张桌子只有 1 个秘密盐的设置,每个表格单元格的盐来自(即通过算法确定)来自该 1 个秘密盐。
我需要每个表单元格一个新盐的原因是我需要宣传每个列值的哈希值而不泄露它的值。(我将通过将单元格的值连接到其盐值来计算每个单元格的哈希值,然后计算该字节序列的哈希值。)
我想到的生成每个表单元盐的简单策略是说为表生成一个秘密的、安全的 32 字节随机字节序列,称为 R_32,然后为每个单元计算连接的 R_32 的 SHA-256与单元格的坐标。在伪代码中:
salt(row,col) = SHA_256( R_32 + row + col)
这里+
表示字节串连接(不是加法)。
这样,我既可以宣传表格单元格的哈希值,也可以稍后证明该单元格的内容生成了哈希值(通过仅公开该单元格的盐及其内容)。
我是一名数学程序员,对密码学原理有一些工作(应用程序级)知识,但不是密码学家。所以2个一般问题:
上述
salt(row,col)
功能安全吗?(我显然认为应该是,但可能有细微之处)我觉得我不能成为第一个解决从一种秘密盐中衍生出多种盐的问题的人。然而,我的搜索一无所获。也许他们甚至写过它。如果是这样,任何指针都非常感谢。
谢谢
python - Python crypt() 脚本无法正确编译
知道为什么这不能正确编译吗?
它应该将计算的_salt_hash 与加密的密码进行比较,如果它们匹配,那么它将打印匹配的单词。目前有错误AttributeError: 'list' object has no attribute 'strip'
。如何完成代码,以便向我显示匹配的单词?
(如果在我的程序中没有正确缩进,请忽略)
apache-spark - PySpark - 在存在偏斜的情况下腌制内部连接
我正在使用内部连接来生成记录比较,以消除重复数据。
我想对这些连接加盐,以便记录比较在存在偏斜的情况下分布更均匀。
下面是一个非常简单的激励示例——真实的输入数据要大得多。
假设我们有一个如下表(此处为 csv )。
名 | 姓 | 城市 |
---|---|---|
查尔斯 | 狄更斯 | 伦敦 |
查理 | 狄更斯 | 伦敦 |
弗吉尼亚 | 羊毛 | 伦敦 |
弗吉尼亚 | 狼 | 伦敦 |
玛丽 | 雪莱 | 伦敦 |
简 | 奥斯汀 | 史蒂文顿 |
要生成记录比较,我可以编写如下 sql:
在大型数据集上,spark 将选择一个SortMergeJoin
. 数据将在 HashPartitioned 上进行city
。
因此,所有 5 条记录city = london
都将在一个执行器上结束,将在该执行器上london
生成记录的笛卡尔积 - 总共 25 条记录。
这在实际数据集上产生了一个问题,其中的计数city=london
可能为 10,000 - 在单个执行器上的单个任务中生成 100,000,000 次比较。
我的问题是我怎样才能让这个加入更均匀地分配工作?. 请注意,需要生成所有 25(或 100m)条记录比较 - 只是我们希望它们在不同任务之间进行比较
我尝试过的解决方案
我有一个非常不优雅的工作解决方案,如下所示。我正在寻求改进这一点。
第 1 步:创建一个随机整数列,random_int
。为简单起见,假设它包含 1-3 范围内的整数。
步骤2:运行3次left join,并union all
该解决方案给出了正确的答案,并且在存在偏斜的情况下在大型数据集上运行得更快。但它在执行计划上产生了很多复杂性,我不禁感到必须有更好的方法。
这个真正的上下文问题是我的开源软件Splink的阻塞步骤。因此,提供的任何帮助都将有助于改进此软件。(当然也欢迎 PR!)