No Description

encrypt_views.py 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # -*- coding: utf-8 -*-
  2. from __future__ import division
  3. import random
  4. from django_response import response
  5. from logit import logit
  6. from mch.models import BrandInfo, ModelImageInfo, ModelInfo
  7. from utils.algorithm.b64 import b64_decrypt, b64_encrypt
  8. from utils.algorithm.caesar import caesar_decrypt, caesar_encrypt
  9. from utils.algorithm.rsalg import rsa_decrypt, rsa_encrypt
  10. # CIPHER_ALGORITHM = ('CAESAR', 'B64', 'RSA')
  11. CIPHER_ALGORITHM = ('CAESAR', )
  12. CIPHER_PREFIX = {
  13. 'CAESAR': '0',
  14. 'B64': '1',
  15. 'RSA': '2',
  16. }
  17. @logit(res=True)
  18. def encrypt(request):
  19. plaintext = request.POST.get('plaintext', '')
  20. alg = random.choice(CIPHER_ALGORITHM)
  21. if alg == 'CAESAR':
  22. ciphertext = caesar_encrypt(plaintext)
  23. elif alg == 'B64':
  24. ciphertext = b64_encrypt(plaintext)
  25. elif alg == 'RSA':
  26. ciphertext = rsa_encrypt(plaintext)
  27. else:
  28. ciphertext = plaintext
  29. return response(200, data={
  30. 'ciphertext': u'%s+%s' % (CIPHER_PREFIX.get(alg, ''), ciphertext),
  31. })
  32. @logit(res=True)
  33. def decrypt(request):
  34. ciphertext = request.POST.get('ciphertext', '')
  35. alg, ciphertext = ciphertext.split('+', 1)
  36. if alg == CIPHER_PREFIX['CAESAR']:
  37. plaintext = caesar_decrypt(ciphertext)
  38. elif alg == CIPHER_PREFIX['B64']:
  39. plaintext = b64_decrypt(ciphertext)
  40. elif alg == CIPHER_PREFIX['RSA']:
  41. plaintext = rsa_decrypt(ciphertext)
  42. else:
  43. plaintext = ciphertext
  44. # brand_id#model_id#distributor_id#sn#time
  45. # AAAA#AAAAAA#AAAAA#AAAAAAAAAAAAAA#180224
  46. brand_pk, model_pk, distributor_pk, sn, time = plaintext.split('#')
  47. try:
  48. logo_url = BrandInfo.objects.get(pk=brand_pk).brand_logo_url
  49. except BrandInfo.DoesNotExist:
  50. logo_url = ''
  51. try:
  52. model_imgs = ModelInfo.objects.get(pk=model_pk).images
  53. except ModelInfo.DoesNotExist:
  54. model_imgs = []
  55. return response(200, data={
  56. 'plaintext': plaintext,
  57. 'logo_url': logo_url,
  58. 'model_imgs': model_imgs,
  59. })