BCrypt 加密实现
  Bcrypt百度百科: bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。
  除了对您的数据进行加密,默认情况下,bcrypt 在删除数据之前将使用随机数据三次覆盖原始输入文件,以阻挠可能会获得您的计算机数据的人恢复数据的尝试。如果您不想使用此功能,可设定禁用此功能。
  bcrypt 使用的是布鲁斯·施内尔在1993年发布的 Blowfish 加密算法。具体来说,bcrypt 使用保罗·柯切尔的算法实现。随 bcrypt 一起发布的源代码对原始版本作了略微改动。
简单的说,Bcrypt就是一款加密工具,可以比较方便地实现数据的加密工作。下面是使用Bcrypt对数据加密的一个简单的栗子:
1: 可以官网下载源码,网址:http://www.mindrot.org/projects/jBCrypt/
2: 使用列子
import java.util.HashMap;
import java.util.Map; import org.apache.commons.lang3.StringUtils;
/**
* Bcrypt encryption algorithm
* @author yue.li3
*
*/
public class BcryptCipher {
// generate salt seed
private static final int SALT_SEED = 12;
// the head fo salt
private static final String SALT_STARTSWITH = "$2a$12"; public static final String SALT_KEY = "salt"; public static final String CIPHER_KEY = "cipher"; /**
* Bcrypt encryption algorithm method
* @param encryptSource
* need to encrypt the string
* @return Map , two values in Map , salt and cipher
*/
public static Map<String, String> Bcrypt(final String encryptSource) {
String salt = BCrypt.gensalt(SALT_SEED);
Map<String, String> bcryptResult = Bcrypt(salt, encryptSource);
return bcryptResult;
}
/**
*
* @param salt encrypt salt, Must conform to the rules
* @param encryptSource
* @return
*/
public static Map<String, String> Bcrypt(final String salt, final String encryptSource) {
if (StringUtils.isBlank(encryptSource)) {
throw new RuntimeException("Bcrypt encrypt input params can not be empty");
} if (StringUtils.isBlank(salt) || salt.length() != 29) {
throw new RuntimeException("Salt can't be empty and length must be to 29");
}
if (!salt.startsWith(SALT_STARTSWITH)) {
throw new RuntimeException("Invalid salt version, salt version is $2a$12");
} String cipher = BCrypt.hashpw(encryptSource, salt);
Map<String, String> bcryptResult = new HashMap<String, String>();
bcryptResult.put(SALT_KEY, salt);
bcryptResult.put(CIPHER_KEY, cipher);
return bcryptResult;
} }
BCrypt 加密实现的更多相关文章
- laravel5的Bcrypt加密方式对系统保存密码的小结
		
laravel5文档介绍 //对 A 密码使用Bcrypt 加密 $password = Hash::make('secret'); //你也可直接使用 bcrypt 的 function $pass ...
 - laravel5的Bcrypt加密方式对系统保存密码
		
laravel5文档介绍 //对 A 密码使用Bcrypt 加密 $password = Hash::make('mima'); //你也可直接使用 bcrypt 的 function $passwo ...
 - Spring Security项目的搭建以及Spring Security的BCrypt加密
		
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
 - bcrypt 加密
		
关于 bcrypt:1.bcrypt是不可逆的加密算法,无法通过解密密文得到明文.2.bcrypt和其他对称或非对称加密方式不同的是,不是直接解密得到明文,也不是二次加密比较密文,而是把明文和存储的密 ...
 - Java通过BCrypt加密
		
一.概述 在用户模块,对于用户密码的保护,通常都会进行加密.我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否 ...
 - 常用加密算法简单整理以及spring securiy使用bcrypt加密
		
一.哈希加密 1.md5加密 Message Digest Algorithm MD5(中文名为消息摘要算法第五版) https://baike.baidu.com/item/MD5/212708?f ...
 - 使用BCrypt算法加密存储登录密码用法及好处
		
//导入import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; /** *使用BCrypt算法加密存储登录密码 ...
 - Spring Security笔记:使用BCrypt算法加密存储登录密码
		
在前一节使用数据库进行用户认证(form login using database)里,我们学习了如何把“登录帐号.密码”存储在db中,但是密码都是明文存储的,显然不太讲究.这一节将学习如何使用spr ...
 - 使用bcrypt进行用户密码加密的简单实现
		
Bcrypt百度百科: bcrypt,是一个跨平台的文件加密工具.由它加密的文件可在所有支持的操作系统和处理器上进行转移.它的口令必须是8至56个字符,并将在内部被转化为448位的密钥. 除了对您的数 ...
 
随机推荐
- Github上Fork代码,及源码修改
			
iOS开发中经常遇到这种情况,你使用的第三方库不能完全满足自己项目需要,只能修改源码来解决. 我们以前的解决办法是,添加到项目中直接修改源码.这样就有一个问题,不能和源库同步,当作者更新后你不能(po ...
 - Linux CentOS 修改内核引导顺序
			
CentOS 7.0 系统更改内核启动顺序 可以 uname -a查下当前的 由于 CentOS 7 使用 grub2 作为引导程序,所以和 CentOS 6 有所不同,并不是修改 /etc/grub ...
 - 海康网络摄像机调用SDK解码Java版
			
两个回调函数: FRealDataCallBack 实现预览回调数据 DecCallBack 解码回调函数 在HCNetSDK.java补充相关函数和结构声明 //播放库函数声明,PlayCtrl.d ...
 - php 合并数组的方法 非array_merge
			
Array ( [0] => Array ( [max] => 50 [date] => 2016-01-07 ) [1] => Array ( [max] => 100 ...
 - Timer类与TimerTask类
			
有个schedule方法,可以指定过多长时间定期的执行某个程序或某段代码,或者过多长时间启动一个线程等. TimerTask类实现了Runnable接口,要执行的类由它里面实现的run方法来完成. 编 ...
 - 嵌入式驱动开发之spi---spi串口通信调试
			
一. 概念 SPI是 Serial Peripheral Interface(串型外部接口)的缩写.SPI接口有4根PIN脚,分别是: * SPICLK : 用于传输数据的同 ...
 - CFontDialog学习
			
void CMfcFontDlgDlg::OnBtnFont() { // Show the font dialog with all the default settings. CFontDialo ...
 - Oracle起步---创建临时表空间/表空间/创建用户/授权
			
1. 安装: 百度一下你就知道 2. sqlplus登录/sqlplus命令登录 在安装Oracle时,你需要记住设置的“全局数据库名”(默认为orcl) 和 口令,在以两种方式登录时: 用户名: s ...
 - poj 1322  Chocolate (概率dp)
			
///有c种不同颜色的巧克力.一个个的取.当发现有同样的颜色的就吃掉.去了n个后.到最后还剩m个的概率 ///dp[i][j]表示取了i个还剩j个的概率 ///当m+n为奇时,概率为0 # inclu ...
 - django用户认证系统——注销和页面跳转5
			
当用户想切换登录账号,或者想退出登录状态时,这时候就需要注销已登录的账号.现在我们来为网站添加注销登录的功能,这个功能 Django 也已经为我们提供,我们只需做一点简单配置. 注销登录 注销登录的视 ...