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); ...
随机推荐
- leetCode----day02---- 买卖股票的最佳时机 II
要求: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必 ...
- ORA-01012:not logged on的解决办法
conn / as sysdba 报错ORA-01012: not logged on 发生原因:关闭数据库是shutdown 后面没有接关闭参数中的任何一个. nomal ————- —-所有连接都 ...
- Codeforces Round #419
A Karen and Morning 找最近的回文时间 模拟 往后推 判判就行 //By SiriusRen #include <bits/stdc++.h> using namesp ...
- 服务器上oracle的监听设置
1.查看本机的计算机名 2.修改etc/host 3.修改oracle的listener.ora(我服务器上的路径:) 4.修改tnsnames.ora(和上边文件一个目录)
- es6杂记
es6杂记 let 和 const let 仅在代码块里有效 { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b / ...
- rrdtool 实践
rrdtool 实践 rrdtool 参数比较多,如果直接看文档,不知从何入手,直接从例子入手这样容易理解,模拟网卡流量 1. 创建数据库 rrdtool create Flow.rrd --star ...
- java_File对象
package File; import java.io.File; import java.io.IOException; public class file { public static voi ...
- Sybase_ASA 字符串拼接
列转行并拼接字符串,使用LIST函数 SELECT LIST(T.NAME,',') FROM TAB_DEMO T;
- NGINX+PHP-FPM7 FastCGI sent in stderr: “Primary script unknown”
https://www.cnblogs.com/hjqjk/p/5651275.html 一开始是Nginx打开网页显示一直是拒绝访问.查看nginx日志是报错显示我的题目,然后就各种搜索解决啊! 百 ...
- 1.Linux入门介绍
1.1 Linux概述 1.1.1 Linux简要介绍 Linux的由来: Linux的内核最初是由芬兰人李纳斯·托瓦茨在上大学的时候编写的一个内核,它是基于Unix操作系统编写的 大多服务器使用的是 ...