我使用Python M2Crypto的RSA和PKCS1填充对外部网站API使用的电子邮件进行编码。使用unicode时,编码的电子邮件不会返回API的结果,但是当我使用str(unicode_email)时,我收到了正确的信息。M2Crypto RSA Unicode字符串编码不同于字节字符串
我的印象是,在这种情况下,字符串的unicode和byte表示都应该起作用。有谁知道unicode为什么失败?
代码以供参考:
from M2Crypto import RSA
email = u'[email protected]' #fails
email = str(email) # succeeds
rsa = RSA.load_pub_key('rsa_pubkey.pem')
result = rsa.public_encrypt(email, RSA.pkcs1_padding).encode('base64')
字符通常是1个字节宽.... unicode通常是2个字节宽...(至少afaik ...(操作系统特定?)),我很确定它期待1字节宽字符 –
@JoranBeasley请阅读[绝对最低限度的每个软件开发人员,肯定必须知道Unicode和字符集(无借口!)](http://www.joelonsoftware.com/articles/Unicode.html)。 Unicode不是一种字符编码,并且不涉及字节,但事实上,您不能将所有unicode代码点放入16位,因为其中有2^16个以上。 – delnan
@delnan谢谢...收藏后阅读..但是是的好吧点承认:) –