password加密的算法
加密原理:採用不同的加密算法对字符串进行加盐加密处理。
- 用以防止密文被md5字典进行反向暴力破解。
採用美国家安全局发布的加密算法(RFC 4357)加密,不採用自己创建的加密算法,以避免有安全漏洞。
下面是基于Yii框架的实现代码。
<?
php
/**
* 密码加密算法
* 对不同类型密码採用不同的加密算法进行加密处理
* @author yagas<yagas@sina.com>
* @url http://blog.csdn.net/yagas
* @version 0.1
* @example:
* $passwd = new TPassword( TPassword::UserPassword );
* $passwd->encode( "123456" );
* $passwd->ckechPassword( "xxxxxx", "123456" );
*/
class TPassword extends CModel {
/**
* 密码盐长度
* @var int
*/
private $_satlsLen = 5;
/**
* 盐在密文中的偏移值
* @var int
*/
private $_offset = 10;
/**
* 加密算法名称
* @var string
*/
private $_passwordType;
/**
* 会员登录password
* @var string
*/
const UserPassword = "sha224";
/**
* 登陆员登录password
* @var string
*/
const AdminPassword = "snefru256";
/**
* 支付密码
* @var string
*/
const PayPassword = "haval128,3";
public function __construct( $passwordType ) {
$this->_passwordType = $passwordType;
}
public function attributeNames() {
return array();
}
/**
* 加密字符串
* @param string $password 须要进行加密的字符串
* @param string $satls 加密盐
* @return string 密文
*/
public function encode( $password, $satls=null ) {
if( is_null( $satls ) ) {
$satls = '';
while( strlen( $satls ) > $this->_satlsLen ) {
$i = mt_rand( 65, 90 );
$satls .= chr( $i );
}
}
$password = hash( $this->_passwordType, $password.$satls );
$password = md5( $password );
$newPassword = substr( $password, 0, $this->_offset );
$newPassword .= strtolower( $satls ) . substr( $password, $this->_offset );
return substr( $newPassword, 0, 32 );
}
/**
* 验证密码是否正确
* @param string $securtyString 密钥
* @param string $password 密码
* @return boolean
*/
public function checkPassword( $securtyString, $password ) {
$satls = substr( $securtyString, $this->_offset, $this->_satlsLen );
$password = $this->encode( $password, strtoupper( $satls ) );
return $securtyString == $password;
}
}
password加密的算法的更多相关文章
- 将 Shiro 作为一个许可为基础的应用程序 五:password加密/解密Spring应用
考虑系统password的安全,眼下大多数系统都不会把password以明文的形式存放到数据库中. 一把会採取下面几种方式对password进行处理 password的存储 "编码" ...
- password加密问题
password加密问题 个人信息:就读于燕大本科软件project专业 眼下大三; 本人博客:google搜索"cqs_2012"就可以; 个人爱好:酷爱数据结构和算法,希望将来 ...
- Asp.Net 常用工具类之加密——对称加密DES算法(2)
又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有 ...
- java加密解密算法位运算
一.实例说明 本实例通过位运算的异或运算符 “ ^ ” 把字符串与一个指定的值进行异或运算,从而改变每个字符串中字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,异或运算 ...
- linux 下password加密程序(能够用于替换shadow文件里的用户password)
源代码例如以下: #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]){ if(arg ...
- Java加密AES算法及spring中应用
开门见山直接贴上代码 .AESUtil加密解密工具类 import java.security.Key; import java.security.SecureRandom; import java. ...
- 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息.虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都 ...
- 一组PHP可逆加密解密算法
对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密. 对于需要还原的信息,则需要采用可逆的加密解密算法. 下面一组PHP函数是实现此加 ...
- php常用的对字符串进行加密的算法
1. 返回文件扩展名 function getformat($file) { $ext=strrchr($file,"."); $format=strtolower($ext); ...
随机推荐
- 检查阿里云ssl证书到期情况
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-06-10 16:00 # @Author : Anthony.long # ...
- tomcat生成catalina.out文件
生成catalina.out方法 导语:本文为Windows下生tomcat将控制台信息输出到catalina.out文件 且 保证能实时查看日志文件的方法. 一.创建catalina.out 1. ...
- c#——值类型与引用类型
值类型传的是值 引用类型传的是地址
- 认识 java JVM虚拟机选项 Xms Xmx PermSize MaxPermSize 区别
点击window---->preferences---->配置的tomcat---->JDK,在Optional Java VM arguments:中输入 -Xmx512M -Xm ...
- jquery jstree 插件的使用
最近一个项目 需要用到jstree 这个jQuery插件,就研究了下,做目录树 菜单还是很强大的,下面对经常会用到几个用法做下说明. 1. 首先页面 引用 jquery.jstree 2. html ...
- HDU_1026_Ignatius and the Princess I_BFS(保存路径)
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- SSL协议提供的服务
SSL协议提供的服务主要有: 1)认证用户和服务器,确保数据发送到正确的客户机和服务器: 2)加密数据以防止数据中途被窃取: 3)维护数据的完整性,确保数据在传输过程中不被改变.
- C# WebKitBrowser 设置内容
WebKit.WebKitBrowser kitBrowser = new WebKit.WebKitBrowser(); kitBrowser.Dock = DockStyle.Fill; // k ...
- 创建pod索引库(Specs)
专门用来存放xxx.podspec 的索引文件的库就叫做索引库.我们需要将这些索引文件上传到远程索引库才能保证其他的人能够拿来用. 创建一个远程索引库和本地索引库对应起来,步骤如下: 1.登录开源中国 ...
- 控制台输出(System.out.printf)的使用
一. 介绍 System.out.printf 与 C语言中的 printf 使用方法类似,可以向控制台(Console) 输出指定格式的内容.使用 System.out.printf 的方法比使 ...