如何在JavaScript和Python中进行Unicode字符串的base64编码?
我需要一种加密算法,可以把文本加密成文本。
输入的文本可以是任何Unicode字符,而输出的内容应该只包含小写字母a-z、大写字母A-Z、数字0-9,以及一些符号,比如-和.(最多64个字符)。
而且它还应该能把加密后的内容解密回Unicode格式。
这个算法需要用JavaScript和Python来实现。
如果已经有现成的库可以做到这一点,那就太好了;如果没有的话,请告诉我。
让我说说原因
这是为了绕过中国的防火墙,因为GAE的HTTPS在中国被封锁了。对这个该死的政府感到非常愤怒。
2 个回答
4
你想要进行base64编码。在JavaScript和Python 2中,这个过程有点复杂,因为Python 2本身不支持unicode,而在JavaScript中,你需要自己实现一个unicode编码。
Python 3的解决方案
>>> from base64 import b64encode, b64decode
>>> b64encode( 'Some random text with unicode symbols: äöü今日は'.encode() )
b'U29tZSByYW5kb20gdGV4dCB3aXRoIHVuaWNvZGUgc3ltYm9sczogw6TDtsO85LuK5pel44Gv'
>>> b64decode( b'U29tZSByYW5kb20gdGV4dCB3aXRoIHVuaWNvZGUgc3ltYm9sczogw6TDtsO85LuK5pel44Gv' )
b'Some random text with unicode symbols: \xc3\xa4\xc3\xb6\xc3\xbc\xe4\xbb\x8a\xe6\x97\xa5\xe3\x81\xaf'
>>> _.decode()
'Some random text with unicode symbols: äöü今日は'
10
你可以看看这个 base64模块。在Python 2.x版本(从2.4开始):
>>> import base64
>>> s=u"Rückwärts"
>>> s
u'R\xfcckw\xe4rts'
>>> b=base64.b64encode(s.encode("utf-8"))
>>> b
'UsO8Y2t3w6RydHM='
>>> d=base64.b64decode(b)
>>> d
'R\xc3\xbcckw\xc3\xa4rts'
>>> d.decode("utf-8")
u'R\xfcckw\xe4rts'
>>> print d.decode("utf-8")
Rückwärts