`
mike.gao
  • 浏览: 48469 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

密码加密和解密

阅读更多
two way crypt:
#http://crypt.rubyforge.org/blowfish.html
#gem install crypt
require 'crypt/blowfish' 
blowfish = Crypt::Blowfish.new("A key up to 56 bytes long")
plainBlock = "ABCD1234"
p plainBlock
encryptedBlock = blowfish.encrypt_block(plainBlock)
p encryptedBlock
decryptedBlock = blowfish.decrypt_block(encryptedBlock)
p decryptedBlock



bcrypt-ruby

An easy way to keep your users’ passwords secure.

    * bcrypt-ruby.rubyforge.org/
    * github.com/codahale/bcrypt-ruby/tree/master

Why you should use bcrypt

If you store user passwords in the clear, then an attacker who steals a copy of your database has a giant list of emails and passwords. Some of your users will only have one password — for their email account, for their banking account, for your application. A simple hack could escalate into massive identity theft.

It‘s your responsibility as a web developer to make your web application secure — blaming your users for not being security experts is not a professional response to risk.

bcrypt allows you to easily harden your application against these kinds of attacks.
How to install bcrypt
sudo gem install bcrypt-ruby

You‘ll need a working compiler. (Win32 folks should use Cygwin or um, something else.)
How to use bcrypt in your Rails application
The User model
require 'bcrypt'

  class User < ActiveRecord::Base
    # users.password_hash in the database is a :string
    include BCrypt

    def password
      @password ||= Password.new(password_hash)
    end

    def password=(new_password)
      @password = Password.create(new_password)
      self.password_hash = @password
    end

  end

Creating an account
def create
    @user = User.new(params[:user])
    @user.password = params[:password]
    @user.save!
  end

Authenticating a user
def login
    @user = User.find_by_email(params[:email])
    if @user.password == params[:password]
      give_token
    else
      redirect_to home_url
    end
  end

If a user forgets their password?

# assign them a random one and mail it to them, asking them to change it
  def forgot_password
    @user = User.find_by_email(params[:email])
    random_password = Array.new(10).map { (65 + rand(58)).chr }.join
    @user.password = random_password
    @user.save!
    Mailer.create_and_deliver_password_change(@user, random_password)
  end

How to use bcrypt-ruby in general
require 'bcrypt'

  my_password = BCrypt::Password.create("my password") #=> "$2a$10$vI8aWBnW3fID.ZQ4/zo1G.q1lRps.9cGLcZEiGDMVr5yUP1KUOYTa"

  my_password.version              #=> "2a"
  my_password.cost                 #=> 10
  my_password == "my password"     #=> true
  my_password == "not my password" #=> false

  my_password = BCrypt::Password.new("$2a$10$vI8aWBnW3fID.ZQ4/zo1G.q1lRps.9cGLcZEiGDMVr5yUP1KUOYTa")
  my_password == "my password"     #=> true
  my_password == "not my password" #=> false

Check the rdocs for more details — http://bcrypt-ruby.rubyforge.org/classes/BCrypt.htmlBCrypt, http://bcrypt-ruby.rubyforge.org/classes/BCrypt/Password.htmlBCrypt::Password.
分享到:
评论

相关推荐

    凯撒密码加密和解密python实现源码.zip

    凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密...

    基于Python的凯撒密码加密和解密源码.zip

    基于Python的凯撒密码加密和解密源码.zip基于Python的凯撒密码加密和解密源码.zip基于Python的凯撒密码加密和解密源码.zip基于Python的凯撒密码加密和解密源码.zip基于Python的凯撒密码加密和解密源码.zip基于Python...

    php凯撒密码加密和解密---适合加密英文

    内容包含凯撒密码一个加密函数,和一个解密函数,适用于有一些指定需求的人,如有问题请私信我。 恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一...

    C# 密码加密与解密 (DES)

    本文将深入探讨C#编程语言中用于密码加密和解密的一种经典算法——DES(Data Encryption Standard)。DES是一种对称加密算法,它使用相同的密钥进行数据加密和解密。 DES算法的基本原理是通过一系列复杂的数学运算...

    hill密码加密和解密.rar

    本资源使用经典hill密码对输入的字符串进行加密和解密,加密矩阵可以根据自己的要求更改,加密过程中3个字母为一组,不足三个时,输出的解密后的字符串用哑文z补齐。下载解压后,导入MATLAB路径中,直接运行即可。...

    C语言实现凯撒密码加密和解密

    总结来说,C语言实现的凯撒密码加密和解密程序提供了一个基础的加密示例,但在实际应用中需要进一步增强安全性,包括输入验证、错误处理以及安全编程技术的运用。为了获得更高级别的加密保护,可以考虑使用现代加密...

    matlab开发-使用matlabguiguide进行凯撒密码加密和解密

    - `csencryptdecrypt.asv`: 这可能是加密解密函数的保存文件,其中包含了加密和解密的具体算法。 - `caesarcipher.fig`: 这是GUI的图形界面文件,可以被MATLAB加载以显示和运行GUI。 - `caesarcipher.m`: 这是MATLAB...

    Spring Security使用数据库认证及用户密码加密和解密功能

    Spring Security 使用数据库认证及用户密码加密和解密功能 Spring Security 是一个基于 Java 的安全框架,提供了强大的身份验证、授权和访问控制功能。为了提高系统安全性,Spring Security 提供了多种身份验证机制...

    凯撒密码的加密和解密

    "凯撒密码的加密和解密" 凯撒密码是一种古典的加密算法,它的加密和解密过程都可以使用C语言来实现。下面我们将对凯撒密码的加密和解密过程进行详细的解释,并对提供的代码进行分析。 凯撒密码的加密过程 凯撒...

    棋盘加密与凯撒加密解密C代码

    通过深入研究并实践这些代码,你可以更好地理解加密解密的工作原理,并为更高级的密码学概念打下坚实的基础。同时,这也提醒我们,尽管这些古典加密方法在现代密码学面前显得较为脆弱,但它们仍然是信息安全领域的...

    密码学DES算法的实现 含有加密和解密

    "密码学DES算法的实现 含有加密和解密" 密码学中的DES算法是对称加密算法的一种,该算法使用C++语言编写,具有加密和解密两个功能。DES算法是美国国家标准局(NBS)于1977年颁布的数据加密标准(FIPS),它使用56位...

    使用js对密码加密解密三种方式

    使用js对密码加密解密三种方式,包括md5、base64、sha1等主流加密方式。

    用户的密码加密和解密代码

    密码加密和密码解密!! 把用户和密码绑在一起加密,解密也需要用户和加密的密码。

    C++密码加密与解密C++密码加密与解密

    C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与...

    MATLAB 实现Caesar密码加密与解密

    在这个项目中,我们使用了MATLAB这一强大的数值计算和编程环境来实现Caesar密码的加密和解密过程。 MATLAB是一种高级的编程语言,它提供了丰富的数学函数和工具箱,适用于科学计算、数据分析以及工程应用。在MATLAB...

    该程序是一个简单的密码管理器,使用Java实现,使用Swing作为图形用户界面,它允许用户使用主密码加密和解密密码,密.zip

    该程序是一个简单的密码管理器,使用Java实现,使用Swing作为图形用户界面,它允许用户使用主密码加密和解密密码,密

    对密码进行加密解密

    "对密码进行加密解密" 在本篇文章中,我们将讨论如何实现对登录密码的加密解密,以确保项目安全。为了实现这一点,我们将使用 Java 语言和 DES 加密算法来实现密码的加密和解密。 首先,我们需要了解什么是 DES ...

    仿射密码加密与解密C++源程序

    仿射密码加密与解密C++源程序 仿射密码是一种简单的加密算法,它使用线性变换来进行加密和解密。下面我们将详细介绍仿射密码的加密和解密算法,并提供相应的C++源代码。 仿射密码的加密算法是一个线性算法,密钥...

    密码加密、解密程序;C#版的

    - 可以编写一个简单的C#程序,使用AES或RSA进行加密解密,展示如何生成密钥、执行加密和解密操作,以及如何处理哈希和盐值。 以上就是C#中密码加密和解密程序所涉及的关键知识点。理解并熟练应用这些概念和方法,...

    C#.NET密码加密解密源码Demo

    本示例"DESEncrypt"提供了密码加密和解密的源码,旨在帮助开发者了解并实施安全的密码存储策略。DES(Data Encryption Standard)是一种古老的对称加密算法,虽然现在已经被更先进的AES(Advanced Encryption ...

Global site tag (gtag.js) - Google Analytics