我正在尝试使用crypto ++加密http请求,并在app引擎服务器端使用pycrypto解密它们。使用Arc4加密,我可以在iphone端成功加密和解密,但是当我尝试在app引擎上解密时,结果会出现乱码。在我检查日志记录时,在客户端加密后的密文与服务器上收到的文本相同,所以如果它们在视觉上相同,为什么解密会失败?
我想也许它与NSString的编码有关,因为我发现我需要在解密之前在服务器端的密码上调用encode()以避免解密()在尝试编码时失败ascii中的密码。我有一个单独的帖子,深入研究了一下。有人可以提供一些建议吗?
crypto++ / pycrypto with google app engine
更新: 我发现使用Crypto ++在C中加密所产生的密文与使用PyCrypto在python中加密所产生的密文不同。初始化密钥会不会出现问题?我做了类似的事情:
ARC4::Encryption enc("a");
在C.中,在python中,我做了:
testobj=ARC4.new('a')
%-encoded得到的密码在C中与在python中不同。我注意到在C中,我可以为keylength传递第二个参数,我认为对于“a”应该是1,导致与不使用参数时的密码不同。但是,%-encoded结果仍然与python编码不同。
或许我的init看起来特别不对劲吗?
答案 0 :(得分:0)
我发现问题不在于加密impl的init,而是错误地尝试将加密的密文填充到NSString中,而NSString不能简单地采用没有特定编码的原始二进制数据。诀窍是对base64或base16中的数据进行编码,使其可读,然后在解密之前在服务器端使用unhexlify。