我可以通过迁移在数据库中创建第一条记录吗,其中password列中的第一条记录已经被加密
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->string('level');
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
User::firstOrCreate([
'name' => 'admin',
'email' => 'admin@app.com',
'level' => 'Administrator',
'password' => 'password'
]);
}
Run Code Online (Sandbox Code Playgroud)
代码可以工作,但未password加密,有什么建议吗?
在Objective-C中没有直接的bCrypt(http://codahale.com/how-to-safely-store-a-password/)实现,虽然有C代码可以实现这一点,但它专门用于x86处理器,依靠BSD库.
我正在构建一个iOS应用程序,它与相应的在线(.NET和HTML5 + Javascript)应用程序共享相同的密码哈希值.
我不是应该在哪里,我可以阅读非常简单的Java代码(http://www.mindrot.org/projects/jBCrypt/)并将其转换为适合iOS开发的Objective-C代码.
但是,有一个Ruby实现(https://github.com/codahale/bcrypt-ruby),我听说你可以使用Ruby来构建iOS应用程序.我可以将Ruby代码转换为静态库,并将其链接到我的iOS项目吗?或者,甚至使用Mono并利用.NET实现(也是一个干净的,纯代码,无依赖项目)来构建静态库?
或者,最后,有没有人知道bCrypt代码的Objective-C实现?这看起来很简单,我只是不太了解.NET/C#/ Ruby自己翻译它.
标题非常自我解释.我不确定这是否存在,因为它会大大损害bcrypt的安全性,但我在rails应用程序中使用Devise并忘记了我的密码.但是,我可以访问服务器并找到信息.我可以看到加密的密码,需要解密.
我不想要问题的替代解决方案,我只想要一个解密器,所以我可以获得密码.
因此,当有人在网站上注册后,我使用bcrypt加密他们的密码,这些密码存储在数据库的密码列中.现在,如果他们忘记了密码,我想给他们发电子邮件密码,以便他们登录并更改密码.如何撤消bcrypt加密以获取原始密码?
我用bcrypt哈希我的密码(因为我运行php 5.3.10 实际上是用password_compat)
我想把函数的结果字符串分成两部分:使用的盐和哈希本身.(我知道使用password_verify()来验证密码.但是我需要使用哈希作为密钥来加密更广泛的安全系统中的私钥.)
对于给定的密码(abcdef),这是结果:
$2y$10$ult68Ti4/zEWX4VQ .... YCOWjL6
Run Code Online (Sandbox Code Playgroud)
我已经改变了一点功能,吐出了concat,salt,hash和hash_format.
... from the password_compat ...
$salt = substr($salt, 0, $required_salt_len);
$hash = $hash_format . $salt;
$ret = crypt($password, $hash);
if (!is_string($ret) || strlen($ret) <= 13) {
return false;
}
return array( 'concat'=>$ret,
'salt'=>$salt,
'format'=>$hash_format,
'hash_format'=>$hash);
Run Code Online (Sandbox Code Playgroud)
我想结果哈希是的一个CONCAT $hash_format,$salt以及hash......但最后一个字符是不同的...
_
[concat] => $2y$10$oWfFYcNqlcUeGwJM0AFUguSJ5t ..... SvWG
[salt] => oWfFYcNqlcUeGwJM0AFUgw
[hash_format] => $2y$10$oWfFYcNqlcUeGwJM0AFUgw
[format] => $2y$10$
^
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,在crypt函数之前和函数之后,salt中的最后一个字符是不同的.
这怎么可能?
我正在进行"注册"页面并且遇到sqlite问题.
我正在使用express,bcrypt-nodejs,bookself.js用于sqlite.收到错误说数据库已锁定.对此有何解决方法?赞赏.下面是该部分的代码.
app.post('/signup', function(req, res){
var username = req.body.username;
var password = req.body.password;
bcrypt.hash(password, null, null, function(err, hash){
new User({'username': username, 'password': hash})
.save()
.then(function(){
console.log('Successfully added a user');
})
.catch(function(err){
throw err;
});
});
res.render('login');
});
Run Code Online (Sandbox Code Playgroud) 我正在关注Michael Hartl的Ruby on Rails教程,在那里我达到了第8章.但是经过验证的?方法总是返回false.Cookie for:remember_token已正确保存.但是当我比较数据库消化时,remember_digest通过BCrypt::Password.new(remember_digest).is_password?(remember_token)它将总是返回false.我正在使用Rails 4.2.5.1.这是我的代码:
controllers/sessions_controller.rb
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
log_in(user)
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
redirect_to user
else
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
end
def destroy
log_out if logged_in?
redirect_to root_url
end
end
models/user.rb
class User < ActiveRecord::Base
attr_accessor :remember_token
before_save { email.downcase! }
validates :name, presence: true, length: { maximum: 50 }
validates :email, presence: …Run Code Online (Sandbox Code Playgroud) 我正在vertx中创建一个注册方法,该方法使用Bcrypt在数据库中编码密码。我的问题来自使用BCrypt编码密码的性能下降。
当即时通讯使用:
-需要大约〜Bcrypt我的查询1200ms
- Whitout Bcrypt 〜220ms内
那我该怎么做才能提高性能呢?有另一种在VertX中编码密码的方法吗?
我在vertx中使用Bcrypt(http://www.mindrot.org/projects/jBCrypt/)。
由于某种原因,该bcrypt.hash方法挂起并且从不调用其回调.
bcrypt.genSalt(29, function(err, salt) {
if (err) {
res.json({ success: false, msg: err.message });
} else {
bcrypt.hash(req.body.password, salt, function (err, hash) {
// This function is never called
res.json({ success: true });
});
}
});
Run Code Online (Sandbox Code Playgroud)
有什么建议?
UPDATE
它似乎与express.js等无关.我刚刚创建了一个脚本文件test.js:
var bcrypt = require('bcrypt');
var pwd = 'Test password 123';
bcrypt.genSalt(29, function(err, salt) {
if (err) {
console.log('1: ' + err.message);
} else {
console.log('Salt: ' + salt);
bcrypt.hash(pwd, salt, function (err, hash) {
if (err) { …Run Code Online (Sandbox Code Playgroud) 我有一个数据库,其中大多数哈希对于我们的用例而言,舍入计数太低。我希望将它们升级到更高的回合/迭代次数,希望使用node.bcrypt.js库。
例:
我的数据库中有类似的内容
'$2a$05$Ss068.p/.i4IRzrYoLM/U.ETLpzwrBs2vVfViqgfC5bI4i3BGClZC'
//From: bcrypt.hashSync("hello world", 5)
Run Code Online (Sandbox Code Playgroud)
我希望它变成这样的东西:
'$2a$10$6sZOFUEWdVMHoCsgF0k1..RhwoD7VmLlLc5.67/Qw81/XuSuNIOcO'
//From: bcrypt.hashSync("hello world", 10)
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?我认为api可能看起来像这样:
//Non-existing api;
var hash = '$2a$05$Ss068.p/.i4IRzrYoLM/U.ETLpzwrBs2vVfViqgfC5bI4i3BGClZC';
const roundCount = 10
bcrypt.upgradeHashRoundCount(hash, roundCount)
.then(function(upgradedHash){
console.log(upgradedHash)
})
.catch(function(error){
console.error("Not a bcrypt hash, or has higher round-count than provided round count")
})
Run Code Online (Sandbox Code Playgroud)
编辑以澄清:
我想做一个批处理作业,在其中获取所有哈希,并对每个哈希进行升级,而没有原始密码可用。由于bcrypt本质上只是在循环,所以我认为从理论上讲应该可以再进行一些回合并将其存储回去。