【问题标题】:How to encrypt plain text to md5 / sha1 in django?如何在 django 中将纯文本加密为 md5 / sha1?
【发布时间】:2015-03-16 02:00:24
【问题描述】:

我想创建一个应用程序,管理员可以让用户使用加密到数据库的新消息。我有核心功能,都可以正常工作。但是,我仍然无法将消息从文本加密到 md5/sha1。我已阅读并尝试过this 和this。但是,我还是做不到。我是 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>

【问题讨论】:

    标签: python django django-views


    【解决方案1】:

    Hashing is not encrypting!

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

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

    如果我告诉你我的字符串是“TOOMANYSECRETS”并且哈希是 10,那么你可以立即看出我在撒谎。但是,如果我告诉你哈希是 13,你无法验证消息是什么,它可能是“TOOMANYSECRETS”或“SETECASTRONOMY”。虽然这一切看起来微不足道,但实际上这就是 MD5 和 SHA 等散列机制的工作原理。

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

    【讨论】:

    • 非常感谢您的解释。对不起,我的问题错了。但是,你能帮我如何将纯文本加密为 md5/sha1 吗?或者您是否发现了另一个类似的问题?非常感谢您的回复先生:)
    • 您不能使用 MD5 或 SHA 加密纯文本。我刚刚解释过了。
    【解决方案2】:

    我可以用这个将纯文本加密到 md5 / sha1

    import hashlib
    print hashlib.md5('test').hexdigest()
    

    这就是我一直在寻找的答案

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 2017-05-31
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      相关资源
      最近更新 更多