django加密算法的glib实现.doc_第1页
django加密算法的glib实现.doc_第2页
django加密算法的glib实现.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

django加密算法的glib实现某项目,B/S+C/S结构,B端使用django框架,C端用到了glib库,为了使C端保存的用户密码能被B端的django验证通过,需要在C端按同样算法加密原始密码。先从django中摘出其密码实现代码,如下:$ cat /tmp/a.py #! /usr/bin/env python# -*- encoding:utf-8 -*-# FileName: a.pyimport hashlibdef get_hexdigest(algorithm, salt, raw_password):Returns a string of the hexdigest of the given plaintext password and saltusing the given algorithm (md5, sha1 or crypt).if algorithm = crypt:try:import cryptexcept ImportError:raise ValueError(crypt password algorithm not supported in this environment)return crypt.crypt(raw_password, salt)if algorithm = md5:return hashlib.md5(salt + raw_password).hexdigest()elif algorithm = sha1:return hashlib.sha1(salt + raw_password).hexdigest()raise ValueError(Got unknown password algorithm type in password.)def check_password(raw_password, enc_password):Returns a boolean of whether the raw_password was correct. Handlesencryption formats behind the scenes.algo, salt, hsh = enc_password.split($)return hsh = get_hexdigest(algo, salt, raw_password)def set_password(raw_password):import randomalgo = sha1salt = get_hexdigest(algo, str(random.random(), str(random.random():5hsh = get_hexdigest(algo, salt, raw_password)password = %s$%s$%s % (algo, salt, hsh)return passwordif _name_=_main_:print check_password(abc123,sha1$42bd7$24eafbd1cb1522eea59c32ec82211be947221578)print check_password(abc123,sha1$ac016$8271fbe00ebf5191be446b895a4448b6b161a788)print check_password(abc123,sha1$2d690$aa6b6eec2dbb9bf1bf89fecab5e0e076658ab1e6)可以看到,django支持crypt、md5和sha1三种加密算法,我们只取sha1这一种即可。对照python代码,使用glib实现的代码如下:#include #include #include gchar* get_hexdigest(const gchar *salt, const gchar *raw_password)gchar *str;gchar *password;str = g_strdup_printf(%s%s, salt, raw_password);password = g_compute_checksum_for_string (G_CHECKSUM_SHA1, str, strlen(str);g_free(str);return password;gchar* set_password(const gchar *raw_password)gchar *salt;gchar *hsh;gchar *str1, *str2;gchar *password;gdouble rand;rand = g_random_double();str1 = g_strdup_printf(%g, rand);rand = g_random_double();str2 = g_strdup_printf(%g, rand);salt = get_hexdigest(str1, str2);salt5 = ;g_free(str1);g_free(str2);hsh = get_hexdigest(salt, raw_password);password = g_strdup_printf(sha1$%s$%s, salt, hsh);g_free(salt);g_free(hsh)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论