我正在尝试使用crypto++加密http请求,并在应用引擎服务器端使用pycrypto解密它们。使用Arc4加密,我可以在iPhone端成功加密和解密,但当我在应用程序引擎上尝试解密时,结果是乱码。在客户端加密后的密文与我检查日志时在服务器端收到的密文相同,所以如果它们在视觉上是相同的,为什么解密会失败?
我想这可能与NSString的编码有关,因为我发现在解密之前,我需要在服务器端的密码上调用encode(),以避免在尝试以ascii编码密码时出现decrypt()失败。我有一个单独的帖子,对此进行了一些深入研究。有人能给点建议吗?
crypto++ / pycrypto with google app engine
更新:我发现用Crypto++用C加密得到的密文和用PyCrypto用python加密得到的密文不一样。会不会是我在初始化密钥时做错了什么?我做了一些类似的事情:
ARC4::Encryption enc("a");在C中,在python中,我这样做:
testobj=ARC4.new('a')在C中,%编码的结果密码与在python中不同。我注意到,在C中,我可以传递第二个键长参数,我猜想"a“应该是1,这导致了与没有参数时不同的密码。但是,%编码的结果仍然不同于python编码。
我的init看起来有什么特别不对劲吗?
发布于 2010-05-12 11:32:28
我发现问题不在于这两种加密执行的初始化,而在于错误地试图将加密的密文填充到NSString中,它不能简单地接受没有特定编码的原始二进制数据。诀窍是用base64或base16对数据进行编码,使其可读,然后在解密之前在服务器端使用unhexlify。
https://stackoverflow.com/questions/2798998
复制相似问题