@@ -2,7 +2,6 @@ |
||
2 | 2 |
|
3 | 3 |
from __future__ import division |
4 | 4 |
|
5 |
-import json |
|
6 | 5 |
import random |
7 | 6 |
|
8 | 7 |
from django_response import response |
@@ -10,13 +9,15 @@ from logit import logit |
||
10 | 9 |
|
11 | 10 |
from mch.models import BrandInfo, ModelImageInfo, ModelInfo |
12 | 11 |
from utils.algorithm.b64 import b64_decrypt, b64_encrypt |
12 |
+from utils.algorithm.caesar import caesar_decrypt, caesar_encrypt |
|
13 | 13 |
from utils.algorithm.rsalg import rsa_decrypt, rsa_encrypt |
14 | 14 |
|
15 | 15 |
|
16 |
-# CIPHER_ALGORITHM = ('B64', 'RSA') |
|
17 |
-CIPHER_ALGORITHM = ('B64', ) |
|
16 |
+# CIPHER_ALGORITHM = ('CAESAR', 'B64', 'RSA') |
|
17 |
+CIPHER_ALGORITHM = ('CAESAR', 'B64') |
|
18 | 18 |
|
19 | 19 |
CIPHER_PREFIX = { |
20 |
+ 'CAESAR': '0', |
|
20 | 21 |
'B64': '1', |
21 | 22 |
'RSA': '2', |
22 | 23 |
} |
@@ -28,7 +29,9 @@ def encrypt(request): |
||
28 | 29 |
|
29 | 30 |
alg = random.choice(CIPHER_ALGORITHM) |
30 | 31 |
|
31 |
- if alg == 'B64': |
|
32 |
+ if alg == 'CAESAR': |
|
33 |
+ ciphertext = caesar_encrypt(plaintext) |
|
34 |
+ elif alg == 'B64': |
|
32 | 35 |
ciphertext = b64_encrypt(plaintext) |
33 | 36 |
elif alg == 'RSA': |
34 | 37 |
ciphertext = rsa_encrypt(plaintext) |
@@ -46,7 +49,9 @@ def decrypt(request): |
||
46 | 49 |
|
47 | 50 |
alg, ciphertext = ciphertext.split('+', 1) |
48 | 51 |
|
49 |
- if alg == CIPHER_PREFIX['B64']: |
|
52 |
+ if alg == CIPHER_PREFIX['CAESAR']: |
|
53 |
+ plaintext = caesar_decrypt(ciphertext) |
|
54 |
+ elif alg == CIPHER_PREFIX['B64']: |
|
50 | 55 |
plaintext = b64_decrypt(ciphertext) |
51 | 56 |
elif alg == CIPHER_PREFIX['RSA']: |
52 | 57 |
plaintext = rsa_decrypt(ciphertext) |
@@ -0,0 +1,22 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+ |
|
3 |
+import random |
|
4 |
+import string |
|
5 |
+ |
|
6 |
+ |
|
7 |
+fromstr = '0123456789#' |
|
8 |
+tostr = 'RKxyjwzcs6U' |
|
9 |
+ |
|
10 |
+ |
|
11 |
+def generate_tostr(n): |
|
12 |
+ fromstrlist = list(string.letters + string.digits) |
|
13 |
+ random.shuffle(fromstrlist) |
|
14 |
+ return ''.join(fromstrlist)[:n] |
|
15 |
+ |
|
16 |
+ |
|
17 |
+def caesar_encrypt(plaintext): |
|
18 |
+ return str(plaintext).translate(string.maketrans(fromstr, tostr)) |
|
19 |
+ |
|
20 |
+ |
|
21 |
+def caesar_decrypt(ciphertext): |
|
22 |
+ return str(ciphertext).translate(string.maketrans(tostr, fromstr)) |