Chinaunix首页 | 论坛 | 博客
  • 博客访问: 122372
  • 博文数量: 31
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 435
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-18 15:52
文章分类

全部博文(31)

文章存档

2011年(5)

2010年(4)

2009年(12)

2008年(10)

我的朋友

分类: LINUX

2008-09-03 16:08:37

php里面查到是这样的:
  • CRYPT_STD_DES - Standard DES-based encryption with a two character salt
  • CRYPT_EXT_DES - Extended DES-based encryption with a nine character salt
  • CRYPT_MD5 - MD5 encryption with a twelve character salt starting with $1$
  • CRYPT_BLOWFISH - Blowfish encryption with a sixteen character salt starting with $2$ or $2a$
并且有这样的示例:
if (CRYPT_STD_DES == 1) {
    echo 
'Standard DES: ' crypt('rasmuslerdorf''rl') . "\n";
}

if (
CRYPT_EXT_DES == 1) {
    echo 
'Extended DES: ' crypt('rasmuslerdorf''_J9..rasm') . "\n";
}

if (
CRYPT_MD5 == 1) {
    echo 
'MD5:          ' crypt('rasmuslerdorf''$1$rasmusle$') . "\n";
}

if (
CRYPT_BLOWFISH == 1) {
    echo 
'Blowfish:     ' crypt('rasmuslerdorf''$2a$07$rasmuslerd...........$') . "\n";
}
?>
在linux和windows下,都只支持标准DES和md5加密这2种,不知其他2个怎么折腾出来;
python的crypt模块也只是对标准和md5说了下,看来也是同样情况;

标准DES加密:
是从64个字符(大小写A-Z,0-9,还有/ .)挑2个作为salt;
扩展DES: 挑9个;
标准MD5: 是挑8个,然后用$1$SALT$, 这样12个字符作为salt;
BLOWFISH: 没明白,说是16个字符,可数来数去都不止;

姑且照葫芦画瓢,把BLOWFISH当成16个字符:

===============================================================
import random,crypt,getpass
salt = ''
print """
crypt method choose:
1) standard DES
#2) extended DES
3) MD5
#4) BLOWFISH
"""
choosenum = int(raw_input())
if choosenum == 1:  totalnum = 2
#elif choosenum == 2:  totalnum = 9
elif choosenum == 3:  totalnum = 8
#elif choosenum == 4:  totalnum = 12
else:
    print "choose error num"
    sys.exit(0)
for i in range(0,totalnum):
    salt = salt + random.choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ./0123456789')
#print "salt is:", salt

newpass = getpass.getpass("pls input your password:")
if choosenum == 3:
    print crypt.crypt(newpass,"$1$" + salt + "$")
elif choosenum == 1 or choosenum == 2 :
    print crypt.crypt(newpass,salt)
#elif choosenum == 4:
#    print crypt.crypt(newpass,"$2$" + salt + "$")

得到的加密字符,取代shadow文件中的密码部分;
阅读(863) | 评论(0) | 转发(0) |
0

上一篇:gpg

下一篇:转:crontab

给主人留下些什么吧!~~