Guest User

Untitled

a guest
Apr 5th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.93 KB | None | 0 0
  1. k='Thats my Kung Fu'
  2. import pymysql
  3. conn=pymysql.connect(host='localhost',user='root',password='123456789',db='cyber')
  4. cur=conn.cursor(pymysql.cursors.DictCursor)
  5. cur.execute("select top 1 from data")
  6. m = cur.fetchone()
  7. cur.execute("delete top 1 from data")
  8.  
  9. global k1
  10. k1=[0 for i in range(16)]
  11. r=[[0 for j in range(16)] for i in range(5)]
  12. if(len(m)<16):
  13. m=m + ' '*(16-len(m))
  14. for i in range(16):
  15. k1[i]=m[i].encode("utf-8").hex()
  16.  
  17. def rkey(q):
  18. def sbox(a,b):
  19. if(a=='0'):
  20. return {
  21. '0': '63',
  22. '1': '7c',
  23. '2': '77',
  24. '3': '7b',
  25. '4': 'f2',
  26. '5': '6b',
  27. '6': '6f',
  28. '7': 'c5',
  29. '8': '30',
  30. '9': '01',
  31. 'a': '67',
  32. 'b': '2b',
  33. 'c': 'fe',
  34. 'd': 'd7',
  35. 'e': 'ab',
  36. 'f': '76',
  37. }[b]
  38. if(a=='1'):
  39. return {
  40. '0': 'ca',
  41. '1': '82',
  42. '2': 'c9',
  43. '3': '7d',
  44. '4': 'fa',
  45. '5': '59',
  46. '6': '47',
  47. '7': 'f0',
  48. '8': 'ad',
  49. '9': 'd4',
  50. 'a': 'a2',
  51. 'b': 'af',
  52. 'c': '9c',
  53. 'd': 'a4',
  54. 'e': '72',
  55. 'f': 'c0',
  56. }[b]
  57. if(a=='2'):
  58. return {
  59. '0': 'b7',
  60. '1': 'fd',
  61. '2': '93',
  62. '3': '26',
  63. '4': '36',
  64. '5': '3f',
  65. '6': 'f7',
  66. '7': 'cc',
  67. '8': '34',
  68. '9': 'a5',
  69. 'a': 'e5',
  70. 'b': 'f1',
  71. 'c': '71',
  72. 'd': 'd8',
  73. 'e': '31',
  74. 'f': '15',
  75. }[b]
  76. if(a=='3'):
  77. return {
  78. '0': '04',
  79. '1': 'c7',
  80. '2': '23',
  81. '3': 'c3',
  82. '4': '18',
  83. '5': '96',
  84. '6': '05',
  85. '7': '9a',
  86. '8': '07',
  87. '9': '12',
  88. 'a': '80',
  89. 'b': 'e2',
  90. 'c': 'eb',
  91. 'd': '27',
  92. 'e': 'b2',
  93. 'f': '75',
  94. }[b]
  95. if(a=='4'):
  96. return {
  97. '0': '09',
  98. '1': '83',
  99. '2': '2c',
  100. '3': '1a',
  101. '4': '1b',
  102. '5': '6e',
  103. '6': '5a',
  104. '7': 'a0',
  105. '8': '52',
  106. '9': '3b',
  107. 'a': 'd6',
  108. 'b': 'b3',
  109. 'c': '29',
  110. 'd': 'e3',
  111. 'e': '2f',
  112. 'f': '84',
  113. }[b]
  114. if(a=='5'):
  115. return {
  116. '0': '53',
  117. '1': 'd1',
  118. '2': '00',
  119. '3': 'ed',
  120. '4': '20',
  121. '5': 'fc',
  122. '6': 'b1',
  123. '7': '5b',
  124. '8': '6a',
  125. '9': 'cb',
  126. 'a': 'be',
  127. 'b': '39',
  128. 'c': '4a',
  129. 'd': '4c',
  130. 'e': '58',
  131. 'f': 'cf',
  132. }[b]
  133. if(a=='6'):
  134. return {
  135. '0': 'd0',
  136. '1': 'ef',
  137. '2': 'aa',
  138. '3': 'fb',
  139. '4': '43',
  140. '5': '4d',
  141. '6': '33',
  142. '7': '85',
  143. '8': '45',
  144. '9': 'f9',
  145. 'a': '02',
  146. 'b': '7f',
  147. 'c': '50',
  148. 'd': '3c',
  149. 'e': '9f',
  150. 'f': 'a8',
  151. }[b]
  152. if(a=='7'):
  153. return {
  154. '0': '51',
  155. '1': 'a3',
  156. '2': '40',
  157. '3': '8f',
  158. '4': '92',
  159. '5': '9d',
  160. '6': '38',
  161. '7': 'f5',
  162. '8': 'bc',
  163. '9': 'b6',
  164. 'a': 'da',
  165. 'b': '21',
  166. 'c': '10',
  167. 'd': 'ff',
  168. 'e': 'f3',
  169. 'f': 'd2',
  170. }[b]
  171. if(a=='8'):
  172. return {
  173. '0': 'cd',
  174. '1': '0c',
  175. '2': '13',
  176. '3': 'ec',
  177. '4': '5f',
  178. '5': '97',
  179. '6': '44',
  180. '7': '17',
  181. '8': 'c4',
  182. '9': 'a7',
  183. 'a': '7e',
  184. 'b': '3d',
  185. 'c': '64',
  186. 'd': '5d',
  187. 'e': '19',
  188. 'f': '73',
  189. }[b]
  190. if(a=='9'):
  191. return {
  192. '0': '60',
  193. '1': '81',
  194. '2': '4f',
  195. '3': 'dc',
  196. '4': '22',
  197. '5': '2a',
  198. '6': '90',
  199. '7': '88',
  200. '8': '46',
  201. '9': 'ee',
  202. 'a': 'b8',
  203. 'b': '14',
  204. 'c': 'de',
  205. 'd': '5e',
  206. 'e': '0b',
  207. 'f': 'db',
  208. }[b]
  209. if(a=='a'):
  210. return {
  211. '0': 'e0',
  212. '1': '32',
  213. '2': '3a',
  214. '3': '0a',
  215. '4': '49',
  216. '5': '06',
  217. '6': '24',
  218. '7': '5c',
  219. '8': 'c2',
  220. '9': 'd3',
  221. 'a': 'ac',
  222. 'b': '62',
  223. 'c': '91',
  224. 'd': '95',
  225. 'e': 'e4',
  226. 'f': '79',
  227. }[b]
  228. if(a=='b'):
  229. return {
  230. '0': 'e7',
  231. '1': 'c8',
  232. '2': '37',
  233. '3': '6d',
  234. '4': '8d',
  235. '5': 'd5',
  236. '6': '4e',
  237. '7': 'a9',
  238. '8': '6c',
  239. '9': '56',
  240. 'a': 'f4',
  241. 'b': 'ea',
  242. 'c': '65',
  243. 'd': '7a',
  244. 'e': 'ae',
  245. 'f': '08',
  246. }[b]
  247. if(a=='c'):
  248. return {
  249. '0': 'ba',
  250. '1': '78',
  251. '2': '25',
  252. '3': '2e',
  253. '4': '1c',
  254. '5': 'a6',
  255. '6': 'b4',
  256. '7': 'c6',
  257. '8': 'e8',
  258. '9': 'dd',
  259. 'a': '74',
  260. 'b': '1f',
  261. 'c': '4b',
  262. 'd': 'bd',
  263. 'e': '8b',
  264. 'f': '8a',
  265. }[b]
  266. if(a=='d'):
  267. return {
  268. '0': '70',
  269. '1': '3e',
  270. '2': 'b5',
  271. '3': '66',
  272. '4': '48',
  273. '5': '03',
  274. '6': 'f6',
  275. '7': '0e',
  276. '8': '61',
  277. '9': '35',
  278. 'a': '57',
  279. 'b': 'b9',
  280. 'c': '86',
  281. 'd': 'c1',
  282. 'e': '1d',
  283. 'f': '9e',
  284. }[b]
  285. if(a=='e'):
  286. return {
  287. '0': 'e1',
  288. '1': 'f8',
  289. '2': '98',
  290. '3': '11',
  291. '4': '69',
  292. '5': 'd9',
  293. '6': '8e',
  294. '7': '94',
  295. '8': '9b',
  296. '9': '1e',
  297. 'a': '87',
  298. 'b': 'e9',
  299. 'c': 'ce',
  300. 'd': '55',
  301. 'e': '28',
  302. 'f': 'df',
  303. }[b]
  304. if(a=='f'):
  305. return {
  306. '0': '8c',
  307. '1': 'a1',
  308. '2': '89',
  309. '3': '0d',
  310. '4': 'bf',
  311. '5': 'e6',
  312. '6': '42',
  313. '7': '68',
  314. '8': '41',
  315. '9': '99',
  316. 'a': '2d',
  317. 'b': '0f',
  318. 'c': 'b0',
  319. 'd': '54',
  320. 'e': 'bb',
  321. 'f': '16',
  322. }[b]
  323.  
  324. w=[[0 for j in range(4)] for i in range(8)]
  325. e=[0 for i in range(16)]
  326. o=q
  327. for i in range(16):
  328. w[i//4][i%4]=o[i]
  329. t=w[3][0]
  330. for i in range(3):
  331. w[3][i]=w[3][i+1]
  332. w[3][3]=t
  333. for i in range(4):
  334. w[3][i]=sbox(w[3][i][0],w[3][i][1])
  335. for i in range(4):
  336. for j in range(4):
  337. w[i][j]=int(w[i][j],16)
  338. for i in range(4):
  339. w[4][i]=w[3][i]^w[0][i]
  340. w[5][i]=w[4][i]^w[1][i]
  341. w[6][i]=w[5][i]^w[2][i]
  342. w[7][i]=w[6][i]^w[3][i]
  343. for i in range(16):
  344. e[i]=format(w[4+(i//4)][i%4],'x')
  345. if(len(e[i])==1):
  346. e[i]='0'+e[i]
  347. return e
  348.  
  349. r[0]=rkey(k1)
  350. r[1]=rkey(r[0])
  351. r[2]=rkey(r[1])
  352. r[3]=rkey(r[2])
  353. r[4]=rkey(r[3])
  354.  
  355. def encrypt(a):
  356. def sbox(a,b):
  357. if(a=='0'):
  358. return {
  359. '0': '63',
  360. '1': '7c',
  361. '2': '77',
  362. '3': '7b',
  363. '4': 'f2',
  364. '5': '6b',
  365. '6': '6f',
  366. '7': 'c5',
  367. '8': '30',
  368. '9': '01',
  369. 'a': '67',
  370. 'b': '2b',
  371. 'c': 'fe',
  372. 'd': 'd7',
  373. 'e': 'ab',
  374. 'f': '76',
  375. }[b]
  376. if(a=='1'):
  377. return {
  378. '0': 'ca',
  379. '1': '82',
  380. '2': 'c9',
  381. '3': '7d',
  382. '4': 'fa',
  383. '5': '59',
  384. '6': '47',
  385. '7': 'f0',
  386. '8': 'ad',
  387. '9': 'd4',
  388. 'a': 'a2',
  389. 'b': 'af',
  390. 'c': '9c',
  391. 'd': 'a4',
  392. 'e': '72',
  393. 'f': 'c0',
  394. }[b]
  395. if(a=='2'):
  396. return {
  397. '0': 'b7',
  398. '1': 'fd',
  399. '2': '93',
  400. '3': '26',
  401. '4': '36',
  402. '5': '3f',
  403. '6': 'f7',
  404. '7': 'cc',
  405. '8': '34',
  406. '9': 'a5',
  407. 'a': 'e5',
  408. 'b': 'f1',
  409. 'c': '71',
  410. 'd': 'd8',
  411. 'e': '31',
  412. 'f': '15',
  413. }[b]
  414. if(a=='3'):
  415. return {
  416. '0': '04',
  417. '1': 'c7',
  418. '2': '23',
  419. '3': 'c3',
  420. '4': '18',
  421. '5': '96',
  422. '6': '05',
  423. '7': '9a',
  424. '8': '07',
  425. '9': '12',
  426. 'a': '80',
  427. 'b': 'e2',
  428. 'c': 'eb',
  429. 'd': '27',
  430. 'e': 'b2',
  431. 'f': '75',
  432. }[b]
  433. if(a=='4'):
  434. return {
  435. '0': '09',
  436. '1': '83',
  437. '2': '2c',
  438. '3': '1a',
  439. '4': '1b',
  440. '5': '6e',
  441. '6': '5a',
  442. '7': 'a0',
  443. '8': '52',
  444. '9': '3b',
  445. 'a': 'd6',
  446. 'b': 'b3',
  447. 'c': '29',
  448. 'd': 'e3',
  449. 'e': '2f',
  450. 'f': '84',
  451. }[b]
  452. if(a=='5'):
  453. return {
  454. '0': '53',
  455. '1': 'd1',
  456. '2': '00',
  457. '3': 'ed',
  458. '4': '20',
  459. '5': 'fc',
  460. '6': 'b1',
  461. '7': '5b',
  462. '8': '6a',
  463. '9': 'cb',
  464. 'a': 'be',
  465. 'b': '39',
  466. 'c': '4a',
  467. 'd': '4c',
  468. 'e': '58',
  469. 'f': 'cf',
  470. }[b]
  471. if(a=='6'):
  472. return {
  473. '0': 'd0',
  474. '1': 'ef',
  475. '2': 'aa',
  476. '3': 'fb',
  477. '4': '43',
  478. '5': '4d',
  479. '6': '33',
  480. '7': '85',
  481. '8': '45',
  482. '9': 'f9',
  483. 'a': '02',
  484. 'b': '7f',
  485. 'c': '50',
  486. 'd': '3c',
  487. 'e': '9f',
  488. 'f': 'a8',
  489. }[b]
  490. if(a=='7'):
  491. return {
  492. '0': '51',
  493. '1': 'a3',
  494. '2': '40',
  495. '3': '8f',
  496. '4': '92',
  497. '5': '9d',
  498. '6': '38',
  499. '7': 'f5',
  500. '8': 'bc',
  501. '9': 'b6',
  502. 'a': 'da',
  503. 'b': '21',
  504. 'c': '10',
  505. 'd': 'ff',
  506. 'e': 'f3',
  507. 'f': 'd2',
  508. }[b]
  509. if(a=='8'):
  510. return {
  511. '0': 'cd',
  512. '1': '0c',
  513. '2': '13',
  514. '3': 'ec',
  515. '4': '5f',
  516. '5': '97',
  517. '6': '44',
  518. '7': '17',
  519. '8': 'c4',
  520. '9': 'a7',
  521. 'a': '7e',
  522. 'b': '3d',
  523. 'c': '64',
  524. 'd': '5d',
  525. 'e': '19',
  526. 'f': '73',
  527. }[b]
  528. if(a=='9'):
  529. return {
  530. '0': '60',
  531. '1': '81',
  532. '2': '4f',
  533. '3': 'dc',
  534. '4': '22',
  535. '5': '2a',
  536. '6': '90',
  537. '7': '88',
  538. '8': '46',
  539. '9': 'ee',
  540. 'a': 'b8',
  541. 'b': '14',
  542. 'c': 'de',
  543. 'd': '5e',
  544. 'e': '0b',
  545. 'f': 'db',
  546. }[b]
  547. if(a=='a'):
  548. return {
  549. '0': 'e0',
  550. '1': '32',
  551. '2': '3a',
  552. '3': '0a',
  553. '4': '49',
  554. '5': '06',
  555. '6': '24',
  556. '7': '5c',
  557. '8': 'c2',
  558. '9': 'd3',
  559. 'a': 'ac',
  560. 'b': '62',
  561. 'c': '91',
  562. 'd': '95',
  563. 'e': 'e4',
  564. 'f': '79',
  565. }[b]
  566. if(a=='b'):
  567. return {
  568. '0': 'e7',
  569. '1': 'c8',
  570. '2': '37',
  571. '3': '6d',
  572. '4': '8d',
  573. '5': 'd5',
  574. '6': '4e',
  575. '7': 'a9',
  576. '8': '6c',
  577. '9': '56',
  578. 'a': 'f4',
  579. 'b': 'ea',
  580. 'c': '65',
  581. 'd': '7a',
  582. 'e': 'ae',
  583. 'f': '08',
  584. }[b]
  585. if(a=='c'):
  586. return {
  587. '0': 'ba',
  588. '1': '78',
  589. '2': '25',
  590. '3': '2e',
  591. '4': '1c',
  592. '5': 'a6',
  593. '6': 'b4',
  594. '7': 'c6',
  595. '8': 'e8',
  596. '9': 'dd',
  597. 'a': '74',
  598. 'b': '1f',
  599. 'c': '4b',
  600. 'd': 'bd',
  601. 'e': '8b',
  602. 'f': '8a',
  603. }[b]
  604. if(a=='d'):
  605. return {
  606. '0': '70',
  607. '1': '3e',
  608. '2': 'b5',
  609. '3': '66',
  610. '4': '48',
  611. '5': '03',
  612. '6': 'f6',
  613. '7': '0e',
  614. '8': '61',
  615. '9': '35',
  616. 'a': '57',
  617. 'b': 'b9',
  618. 'c': '86',
  619. 'd': 'c1',
  620. 'e': '1d',
  621. 'f': '9e',
  622. }[b]
  623. if(a=='e'):
  624. return {
  625. '0': 'e1',
  626. '1': 'f8',
  627. '2': '98',
  628. '3': '11',
  629. '4': '69',
  630. '5': 'd9',
  631. '6': '8e',
  632. '7': '94',
  633. '8': '9b',
  634. '9': '1e',
  635. 'a': '87',
  636. 'b': 'e9',
  637. 'c': 'ce',
  638. 'd': '55',
  639. 'e': '28',
  640. 'f': 'df',
  641. }[b]
  642. if(a=='f'):
  643. return {
  644. '0': '8c',
  645. '1': 'a1',
  646. '2': '89',
  647. '3': '0d',
  648. '4': 'bf',
  649. '5': 'e6',
  650. '6': '42',
  651. '7': '68',
  652. '8': '41',
  653. '9': '99',
  654. 'a': '2d',
  655. 'b': '0f',
  656. 'c': 'b0',
  657. 'd': '54',
  658. 'e': 'bb',
  659. 'f': '16',
  660. }[b]
  661. f=a
  662. global k1
  663. c=[['02','03','01','01'],['01','02','03','01'],['01','01','02','03'],['03','01','01','02']]
  664. w=[[0 for j in range(4)] for i in range(4)]
  665. g=[[0 for j in range(4)] for i in range(4)]
  666. h=[[0 for j in range(4)] for i in range(4)]
  667. for i in range(16):
  668. w[i//4][i%4]=int(f[i],16)
  669. g[i//4][i%4]=k1[i]
  670. for i in range(4):
  671. for j in range(4):
  672. g[i][j]=sbox(g[i][j][0],g[i][j][1])
  673. for i in range(4):
  674. for j in range(4):
  675. g[i][j]=int(g[i][j],16)
  676. t=g[1][0]
  677. for i in range(3):
  678. g[1][i]=g[1][i+1]
  679. g[1][3]=t
  680. t=g[2][0]
  681. for i in range(3):
  682. g[2][i]=g[2][i+1]
  683. g[2][3]=t
  684. t=g[2][0]
  685. for i in range(3):
  686. g[2][i]=g[2][i+1]
  687. g[2][3]=t
  688. t=g[3][3]
  689. for i in range(3,0,-1):
  690. g[3][i]=g[3][i-1]
  691. g[3][0]=t
  692. for i in range(4):
  693. for j in range(4):
  694. h[i][j]=int(c[i][j],16)^g[i][j]
  695. for i in range(4):
  696. for j in range(4):
  697. g[i][j]=format(h[i][j]^w[i][j],'x')
  698. for i in range(16):
  699. k1[i]=g[i//4][i%4]
  700. if(len(k1[i])==1):
  701. k1[i]='0'+k1[i]
  702.  
  703. for i in range(16):
  704. k1[i]=format(int(k1[i],16)^int(r[0][i],16),'x')
  705. if(len(k1[i])==1):
  706. k1[i]='0'+k1[i]
  707. encrypt(r[1])
  708. encrypt(r[2])
  709. encrypt(r[3])
  710. encrypt(r[4])
  711.  
  712. final=''.join(k1)
  713. print("The encrypted message is ",final)
  714. cur.execute("insert into enc_data values('%s')"%(final))
  715. cur.commit()
Add Comment
Please, Sign In to add comment