如何在django中将纯文本加密到md5 / sha1?

时间:2015-03-16 02:00:25

标签: python django django-views

我想创建一个应用程序,管理员可以使用加密到数据库的新消息向用户。我有核心功能,所有都可以正常工作。但是,我仍然无法将消息从文本加密到md5 / sha1。我已阅读并尝试thisthis。但是,我仍然做不到。我是django的新手,我非常感谢你的回应。谢谢

这是我的模特:

class UserProfile(models.Model):
    user = models.OneToOneField(User) #digunakan untuk relasi ke model User (default) alias UserProfile adalah sebagai extending model
    CATEGORY_CHOICES = (
        ('admin','Admin'),
        ('user','User'),
        )
    hak_akses = models.CharField(max_length=100, choices = CATEGORY_CHOICES) 
    messages = models.CharField(max_length=100, blank=True)
    # password_pckelas = models.CharField(max_length=100, blank=True)

    # Override the __unicode__() method to return out something meaningful!
    def __unicode__(self):
        return self.user.username

这是我的观点功能:

def tambah_user(request, template_name='form_user.html'):
    #cek session
    if 'username' in request.session and request.session['hak_akses'] == 'admin':
        #ambil dari database untuk mengaktifkan ubah_password_admin
        users = User.objects.all()
        user_form = UserForm(data=request.POST)
        profile_form = UserProfileForm(data=request.POST)
        messages = profile_form.data['messages'] #ambil messages
        if request.method == 'POST':
            if user_form.is_valid() and profile_form.is_valid():
                #i want hash messages in here and then save into database
                user = user_form.save()
                user.set_password(user.password)
                user.save()
                profile = profile_form.save(commit=False)
                profile.user = user
                profile.save()
                return redirect('manajemen_user')
            else:
                print user_form.errors, profile_form.errors
        else:
            user_form = UserForm()
            profile_form = UserProfileForm()

        data = {
                'user_form': user_form,
                'profile_form': profile_form,
                'object_list': users
        }

        return render(request, template_name, data)
    #jika session tidak ada
    else:
        return HttpResponseRedirect('/simofa/logout')

这是我的html模板:

<form name="tambah_user" class="form-horizontal style-form" method="POST">{% csrf_token %}
            <div class="form-group">
              <label class="col-sm-2 col-sm-2 control-label">Nama User</label>
              <div class="col-sm-10">
                <!-- <input type="text" class='form-control'> -->
                {{ user_form.username }}
              </div>
            </div>
            <div class="form-group">
              <label class="col-sm-2 col-sm-2 control-label">Password</label>
              <div class="col-sm-10">
                {{ user_form.password }}
              </div>
            </div>
            <div class="form-group">
              <label class="col-sm-2 col-sm-2 control-label">Messages</label>
              <div class="col-sm-10">
                {{ profile_form.messages }}
              </div>
            </div>
            <div class="form-group">
              <label class="col-sm-2 col-sm-2 control-label">Hak Akses</label>
              <div class="col-sm-10">
                {{ profile_form.hak_akses }}
                <br><br><br>
                <button type="submit" class="btn btn-theme">Submit</button>
              </div>
            </div>
          </form>

2 个答案:

答案 0 :(得分:2)

Hashing is not encrypting!

哈希是将一条消息转换为另一条消息的函数。考虑一个哈希函数(LAME_HASH),它只取一个字符串中字符数的计数。

LAME_HASH("TOOMANYSECRETS")
>>> 13
LAME_HASH("SETECASTRONOMY")
>>> 13

如果我告诉你我的字符串是&#34; TOOMANYSECRETS&#34;哈希是10,你可以马上告诉我说谎。但是,如果我告诉你哈希是13,你就不能验证消息是什么,它可能是&#34; TOOMANYSECRETS&#34;或者&#34; SETECASTRONOMY&#34;。虽然这一切看起来都是微不足道的,但这实质上就是像MD5和SHA这样的散列机制。

没有&#34;解密&#34;哈希,如果有人告诉你,否则他们在撒谎,或者整个安全世界会集体爆炸。

答案 1 :(得分:1)

我可以使用此

将纯文本加密到md5 / sha1
import hashlib
print hashlib.md5('test').hexdigest()

这就是我正在寻找的答案