Revision: | 1.2 |
Committed: | Fri Mar 30 12:51:38 2007 UTC (18 years, 1 month ago) by eulisse |
Content type: | text/x-python |
Branch: | MAIN |
CVS Tags: | V01-03-47, V01-03-46, V01-03-45, V01-03-44, V01-03-43, V01-03-42, V01-03-41, V01-03-40, V01-03-39, V01-03-38, V01-03-37, V01-03-36, DBS_3_S2_0_pre2, V01-03-35, V01-03-34, V01-03-33, V01-03-32, V01-03-31, V01-03-30, V01-03-29, V01-03-28, V01-03-27, V01-03-26, V01-03-25, V01_03_25, V01-03-24, V01-03-23, V01-03-22, V01-03-21, V01-03-20, V01-03-19, V01-03-18, V01-03-17, V01-03-16, V01-03-15, V01-03-14, V01-03-13, V01-03-12, V01-03-11, V01-03-10, SiteDB_100708_1, V01-03-09, SiteDB_030608_1, V01-03-08, SiteDB_280508_1, V01-03-07, SiteDB_160408, V01-03-06, SiteDB_080408, V01-03-05, SiteDB_170308, SiteDB_160308, SiteDB_140308, SiteDB_120308, V01-03-04, V01-03-03, V01-03-02, SiteDB_080227, V01-03-01, V01-03-00, SiteDB_SM_Nightly_150208, SiteDB_SM_Nightly_070108, V01-02-04, V01-02-03, V01-02-02, V01-02-01, V01-02-00, V01-00-12, PHEDEX-WebSite-2_5_3_1, PHEDEX_WebSite_2_5_3, forPhedex_test, V01-00-11, V01-00-10, V01-00-09, V01-00-08, V01-00-07, V01-00-06, V01-00-05, V01-00-04, V01-00-03, V01-00-02, V01-00-01, WEBTOOLS_1_0_0_pre1, V1_00_00, V00-09-08, V00-09-07, V00-09-06, V00-09-05, V00-09-04, V00-09-03, V00-09-02, V00-09-01, V00-09-00, HEAD |
Changes since 1.1: | +2 -2 lines |
Log Message: | * /usr/bin/python corrected to /usr/bin/env python |
# | User | Rev | Content |
---|---|---|---|
1 | eulisse | 1.2 | #!/usr/bin/env python |
2 | dfeichti | 1.1 | |
3 | ################################################################ | ||
4 | # crypttest.py | ||
5 | # | ||
6 | eulisse | 1.2 | # Version info: $Id: crypttest.py,v 1.1 2007/02/07 11:46:11 dfeichti Exp $ |
7 | dfeichti | 1.1 | ################################################################ |
8 | |||
9 | import sys | ||
10 | import getopt | ||
11 | import os | ||
12 | from Crypto.Cipher import Blowfish # DES,AES | ||
13 | import base64 | ||
14 | |||
15 | |||
16 | ##################################################### | ||
17 | # PARAMETERS | ||
18 | # | ||
19 | # we use a 56 byte key | ||
20 | key = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabde' | ||
21 | ##################################################### | ||
22 | |||
23 | def addPadding(s): | ||
24 | r = 8 - len(s)%8 | ||
25 | ret = s + r * chr(r) | ||
26 | return ret | ||
27 | |||
28 | def encrypt(plain): | ||
29 | obj = Blowfish.new(key, Blowfish.MODE_CBC,iv) | ||
30 | plain=addPadding(plain) | ||
31 | |||
32 | # prepend the iv to the encrypted string | ||
33 | encr = iv + obj.encrypt(plain) | ||
34 | encr64=base64.encodestring(encr) | ||
35 | return encr64; | ||
36 | |||
37 | def decrypt(encr64): | ||
38 | decr64=base64.decodestring(encr64) | ||
39 | |||
40 | # retrieve the iv from the encrypted string | ||
41 | iv = decr64[0:8]; | ||
42 | decr64 = decr64[8:] | ||
43 | |||
44 | obj = Blowfish.new(key, Blowfish.MODE_CBC,iv) | ||
45 | decr = obj.decrypt(decr64) | ||
46 | |||
47 | # remove any standard padding | ||
48 | if ord(decr[-1]) <= 8: | ||
49 | decr = decr.strip(decr[-1]) | ||
50 | |||
51 | return decr | ||
52 | |||
53 | |||
54 | ############## | ||
55 | # MAIN | ||
56 | |||
57 | (o,leftover)=getopt.getopt(sys.argv[1:],"edhi:") | ||
58 | |||
59 | opts={} | ||
60 | for k,v in o: | ||
61 | opts[k] = v | ||
62 | |||
63 | mode="e" | ||
64 | if opts.has_key('-d'): | ||
65 | mode="d" | ||
66 | |||
67 | if opts.has_key('-i'): | ||
68 | iv = opts['-i'] | ||
69 | else: | ||
70 | iv = os.urandom(8) | ||
71 | |||
72 | if len(iv) != 8: | ||
73 | print 'Error: IV needs to have length = 8' | ||
74 | sys.exit(1); | ||
75 | |||
76 | text=leftover[0] | ||
77 | |||
78 | if mode == 'e': | ||
79 | encr=encrypt(text) | ||
80 | if encr[-1] == '\n': | ||
81 | encr = encr[:-1] | ||
82 | print '>'+encr+'<' | ||
83 | else: | ||
84 | decr='' | ||
85 | decr=decrypt(text) | ||
86 | print '>'+decr+'<' | ||
87 | |||
88 | |||
89 | sys.exit(0) | ||
90 | |||
91 | |||
92 | ####################################################### | ||
93 | |||
94 | #print 'key:',key | ||
95 | #print 'key length: ', len(key) | ||
96 | #key = 'abcdefgh' | ||
97 | |||
98 | # Some tests with other ciphers | ||
99 | # | ||
100 | #obj = DES.new(key, DES.MODE_ECB) | ||
101 | #obj = AES.new(key, AES.MODE_ECB) | ||
102 | #obj = Blowfish.new(key, Blowfish.MODE_CBC,'abcdefgh') | ||
103 | #obj = Blowfish.new(key, Blowfish.MODE_CBC) | ||
104 | #obj = Blowfish.new(key, Blowfish.MODE_ECB) | ||
105 | #print "Key size: ", obj.key_size # 0 means variable key size | ||
106 | #print "Block size: ", obj.block_size |