我正在尝试使用 crypto++ 加密 http 请求,并在应用引擎服务器端使用 pycrypto 对其进行解密。使用 Arc4 加密,我可以在 iphone 端成功加密和解密,但是当我尝试在应用程序引擎上解密时,结果是乱码。在客户端加密后的密文与我检查日志时在服务器上收到的文本相同,所以如果它们在视觉上相同,为什么解密会失败?
我想这可能与 NSString 的编码有关,因为我发现我需要在解密之前在服务器端调用 encode(),以避免在尝试用 ascii 编码密码时decrypt() 失败. 我有一个单独的帖子对此进行了深入研究。任何人都可以提供一些建议吗?
更新:我发现使用 Crypto++ 在 C 中加密产生的密文与使用 PyCrypto 在 python 中加密的密文不同。初始化密钥时我做错了什么吗?我做类似的事情:
ARC4::Encryption enc("a");
在 C 中。在 python 中,我这样做:
testobj=ARC4.new('a')
C 中的 % 编码结果密码与 python 中的不同。我注意到在 C 中,我可以为 keylength 传递第二个参数,我猜它应该是 1 来表示“a”,从而产生与不输入参数时不同的密码。但是,%-encoded 结果仍然与 python 编码不同。
也许我的 init 看起来有什么特别不对劲的地方吗?