﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-socketref,再见！高德-随笔分类-Encrept &amp; RSA &amp; AES</title><link>http://www.cppblog.com/socketref/category/20843.html</link><description>gis,mouse,luolasi</description><language>zh-cn</language><lastBuildDate>Tue, 01 Apr 2014 02:31:29 GMT</lastBuildDate><pubDate>Tue, 01 Apr 2014 02:31:29 GMT</pubDate><ttl>60</ttl><item><title>利用pyCrypto进行加密Token</title><link>http://www.cppblog.com/socketref/archive/2014/04/01/206414.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Tue, 01 Apr 2014 02:22:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2014/04/01/206414.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/206414.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2014/04/01/206414.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/206414.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/206414.html</trackback:ping><description><![CDATA[应用中经常用pyCrypto 来生成用户Token等相关信息，够简单，所以贴代码分享<br />部分代码被关闭或者打开，使用者请自行调整，如果了解rsa很简单理解一下代码&nbsp;<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp; 1</span>&nbsp;GCONFS={<br /><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">auth_public_keyfile</span><span style="color: #800000; ">'</span>:<span style="color: #800000; ">'</span><span style="color: #800000; ">public.rsa</span><span style="color: #800000; ">'</span>,<br /><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">auth_private_keyfile</span><span style="color: #800000; ">'</span>:<span style="color: #800000; ">'</span><span style="color: #800000; ">private.rsa</span><span style="color: #800000; ">'</span><br /><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;}<br /><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;encrypt_des(key,text):<br /><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">from</span>&nbsp;Crypto.Cipher&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;DES<br /><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;base64<br /><span style="color: #008080; ">&nbsp;10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">from</span>&nbsp;Crypto&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;Random<br /><span style="color: #008080; ">&nbsp;11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">iv&nbsp;=&nbsp;Random.get_random_bytes(8)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;des&nbsp;=&nbsp;DES.new(key,&nbsp;DES.MODE_ECB)<br /><span style="color: #008080; ">&nbsp;13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reminder&nbsp;=&nbsp;len(text)%8<br /><span style="color: #008080; ">&nbsp;14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;reminder&nbsp;==0:&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;pad&nbsp;8&nbsp;bytes</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text+=<span style="color: #800000; ">'</span><span style="color: #800000; ">\x08</span><span style="color: #800000; ">'</span>*8<br /><span style="color: #008080; ">&nbsp;16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br /><span style="color: #008080; ">&nbsp;17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text+=chr(8-reminder)*&nbsp;(8-reminder)<br /><span style="color: #008080; ">&nbsp;18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">text+='&nbsp;'*(8-len(text)%8)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;des.encrypt(text)<br /><span style="color: #008080; ">&nbsp;20</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">return&nbsp;base64.encodestring(des.encrypt(text))</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;21</span>&nbsp;<span style="color: #008000; "></span><br /><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;decrypt_des(key,text):<br /><span style="color: #008080; ">&nbsp;23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">from</span>&nbsp;Crypto.Cipher&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;DES<br /><span style="color: #008080; ">&nbsp;24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;base64<br /><span style="color: #008080; ">&nbsp;25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;key</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;26</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;des&nbsp;=&nbsp;DES.new(key,&nbsp;DES.MODE_ECB)<br /><span style="color: #008080; ">&nbsp;27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;=&nbsp;des.decrypt(text)<br /><span style="color: #008080; ">&nbsp;28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pad&nbsp;=&nbsp;ord(text[-1])<br /><span style="color: #008080; ">&nbsp;29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;pad&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">\x08</span><span style="color: #800000; ">'</span>:<br /><span style="color: #008080; ">&nbsp;30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;text[:-8]<br /><span style="color: #008080; ">&nbsp;31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;text[:-pad]<br /><span style="color: #008080; ">&nbsp;32</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;33</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;rsa_generate():<br /><span style="color: #008080; ">&nbsp;35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">from</span>&nbsp;Crypto.PublicKey&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;RSA<br /><span style="color: #008080; ">&nbsp;36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">from</span>&nbsp;Crypto&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;Random<br /><span style="color: #008080; ">&nbsp;37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;random_generator&nbsp;=&nbsp;Random.new().read<br /><span style="color: #008080; ">&nbsp;38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;=&nbsp;RSA.generate(1024,&nbsp;random_generator)<br /><span style="color: #008080; ">&nbsp;39</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;40</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;key.publickey().encrypt('123213213123213213',20)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;=&nbsp;&nbsp;key.publickey().exportKey()<br /><span style="color: #008080; ">&nbsp;43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;key.publickey().exportKey()</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;=&nbsp;key.exportKey()<br /><span style="color: #008080; ">&nbsp;45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;public,private<br /><span style="color: #008080; ">&nbsp;46</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;rsa_encrypt(key,text):<br /><span style="color: #008080; ">&nbsp;48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'''</span><span style="color: #800000; "><br /></span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;传入私钥key和待加密明文数据text<br /></span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;自动生成8字节长度随机密码P,用P将text进行des加密生成E,<br /></span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用私钥key加密P生成P2<br /></span><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #800000; "><br /></span><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;-&nbsp;private&nbsp;key<br /></span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;-&nbsp;orignal&nbsp;text<br /></span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@return:&nbsp;&nbsp;[P2+E]&nbsp;&nbsp;RSA加密的des秘钥&nbsp;+&nbsp;加密的密文<br /></span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'''</span><br /><span style="color: #008080; ">&nbsp;57</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;uuid<br /><span style="color: #008080; ">&nbsp;58</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">from</span>&nbsp;Crypto.PublicKey&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;RSA<br /><span style="color: #008080; ">&nbsp;59</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deskey&nbsp;=&nbsp;hashlib.md5(uuid.uuid1().hex).hexdigest()[:8]<br /><span style="color: #008080; ">&nbsp;60</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;=&nbsp;encrypt_des(deskey,text)<br /><span style="color: #008080; ">&nbsp;61</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;62</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;=&nbsp;RSA.importKey(key)<br /><span style="color: #008080; ">&nbsp;63</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;=&nbsp;key.encrypt(deskey,32)<br /><span style="color: #008080; ">&nbsp;64</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;65</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;r[0]+text&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;加密的key，和des加密的数据</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #008000; "></span><br /><span style="color: #008080; ">&nbsp;67</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;rsa_decrypt(key,text):<br /><span style="color: #008080; ">&nbsp;68</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">from</span>&nbsp;Crypto.PublicKey&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;RSA<br /><span style="color: #008080; ">&nbsp;69</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br /><span style="color: #008080; ">&nbsp;70</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rsa&nbsp;=&nbsp;RSA.importKey(key)<br /><span style="color: #008080; ">&nbsp;71</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deskey&nbsp;=&nbsp;text[:128]<br /><span style="color: #008080; ">&nbsp;72</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;=&nbsp;text[128:]<br /><span style="color: #008080; ">&nbsp;73</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deskey&nbsp;=&nbsp;rsa.decrypt(deskey)<br /><span style="color: #008080; ">&nbsp;74</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;decrypt_des(deskey,text)<br /><span style="color: #008080; ">&nbsp;75</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br /><span style="color: #008080; ">&nbsp;76</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">''</span><br /><span style="color: #008080; ">&nbsp;77</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Cipher:<br /><span style="color: #008080; ">&nbsp;79</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__init__</span>(self):<br /><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.pubkey&nbsp;=&nbsp;pubkey</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.privkey&nbsp;=&nbsp;privkey</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br /><span style="color: #008080; ">&nbsp;83</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;84</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;encrypt(self,key,text):<br /><span style="color: #008080; ">&nbsp;85</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;rsa_encrypt(key,text)<br /><span style="color: #008080; ">&nbsp;86</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;87</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;88</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;decrypt(self,key,text):<br /><span style="color: #008080; ">&nbsp;89</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;rsa_decrypt(key,text)<br /><span style="color: #008080; ">&nbsp;90</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;91</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@staticmethod<br /><span style="color: #008080; ">&nbsp;92</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;getCipher():<br /><span style="color: #008080; ">&nbsp;93</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br /><span style="color: #008080; ">&nbsp;94</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cip&nbsp;=&nbsp;Cipher()<br /><span style="color: #008080; ">&nbsp;95</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;cip<br /><span style="color: #008080; ">&nbsp;96</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br /><span style="color: #008080; ">&nbsp;97</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;traceback.print_exc()<br /><span style="color: #008080; ">&nbsp;98</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;None<br /><span style="color: #008080; ">&nbsp;99</span>&nbsp;<br /><span style="color: #008080; ">100</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;encryptToken(user):<br /><span style="color: #008080; ">101</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'''</span><span style="color: #800000; "><br /></span><span style="color: #008080; ">102</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用户信息转换为token<br /></span><span style="color: #008080; ">103</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'''</span><br /><span style="color: #008080; ">104</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token=<span style="color: #800000; ">''</span><br /><span style="color: #008080; ">105</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br /><span style="color: #008080; ">106</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;json.dumps(user)<br /><span style="color: #008080; ">107</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;=&nbsp;open(GCONFS['auth_public_keyfile'],'r')</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">108</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pubkey&nbsp;=&nbsp;f.read()</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">109</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.close()</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">110</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pubkey&nbsp;=&nbsp;ENCRYPT_PUBKEY<br /><span style="color: #008080; ">111</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;d&nbsp;=&nbsp;Cipher.getCipher().encrypt(pubkey,d)&nbsp;&nbsp;#rsa&nbsp;encrpyt</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">112</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token&nbsp;=&nbsp;base64.encodestring(d).strip()<br /><span style="color: #008080; ">113</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;'token&nbsp;size:',len(token)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">114</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br /><span style="color: #008080; ">115</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;traceback.format_exc()<br /><span style="color: #008080; ">116</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br /><span style="color: #008080; ">117</span>&nbsp;<br /><span style="color: #008080; ">118</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;token<br /><span style="color: #008080; ">119</span>&nbsp;<br /><span style="color: #008080; ">120</span>&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;decryptToken(token):<br /><span style="color: #008080; ">121</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;=&nbsp;None<br /><span style="color: #008080; ">122</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br /><span style="color: #008080; ">123</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;=&nbsp;open(GCONFS['auth_private_keyfile'],'r')</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">124</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;privkey&nbsp;=&nbsp;f.read()</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">125</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.close()</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">126</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;privkey&nbsp;=&nbsp;ENCRYPT_PRIVKEY<br /><span style="color: #008080; ">127</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;base64.decodestring(token)<br /><span style="color: #008080; ">128</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;d&nbsp;=&nbsp;Cipher.getCipher().decrypt(privkey,d)&nbsp;#rsa&nbsp;decrept</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">129</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;=&nbsp;json.loads(d)<br /><span style="color: #008080; ">130</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br /><span style="color: #008080; ">131</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;traceback.format_exc()</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">132</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br /><span style="color: #008080; ">133</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;user</div><img src ="http://www.cppblog.com/socketref/aggbug/206414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2014-04-01 10:22 <a href="http://www.cppblog.com/socketref/archive/2014/04/01/206414.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>