【发布时间】:2012-09-04 18:33:41
【问题描述】:
我正在使用带有 PKCS1 填充的 Python M2Crypto 的 RSA 对电子邮件进行编码,以便与外部网站的 API 一起使用。使用 unicode 时,编码的电子邮件没有返回 API 的结果,但是当我使用 str(unicode_email) 时,我收到了正确的信息。
我的印象是,字符串的 unicode 和字节表示都应该在这种情况下工作。有谁知道为什么 unicode 会失败?
参考代码:
from M2Crypto import RSA
email = u'email@example.com' #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 请阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。 Unicode 不是字符编码,也不关心字节,尽管事实上你不能将所有 unicode 代码点都放入 16 位,因为它们有超过 2^16 个。
-
@delnan 谢谢...收藏了以后再读..但是好的点承认:)
-
谢谢。我也会读的。 :)
标签: python encryption unicode m2crypto