好吧,所以我打包了一个专有的二进制格式。这基本上是几个不同栅格数据集的松散打包。无论如何,只要阅读本文并拆包是一件容易的事。但现在在下一个版本中,栅格xml数据现在要使用AES-256进行加密(不是我的选择,也没有选择)。AES和CryptoAPI解密?当你知道钥匙/盐
现在我们基本上发送了AES密钥和他们正在使用的SALT,所以我们可以修改我们的解包器。
注意,这些键只是一个例子:
他们是每个63字节长的ASCII字符:
Key: "QS;x||COdn'[email protected]`X\/xf}6T7Fe)[qnr^U*HkLv(yF~n~E23DwA5^#-YK|]v."
Salt: "|$-3C]IWo%g6,!K~FvL0Fy`1s&N<|1fg24Eg#{)lO=o;xXY6o%ux42AvB][j#/&"
我们基本上要使用C++的CryptoAPI解密这个(我也是在这周只有程序员,明天就会上线,不是我们的错)。我已经四处寻找了一个实现这个的简单教程。不幸的是,我甚至无法找到一个教程,他们分别有盐和密钥。基本上所有我现在真的是一个小函数,需要一个BYTE数组。随着它的长度。我怎样才能做到这一点?
我已经花了大部分时间尝试制作cryptoAPI的正面/反面。但其并不顺利时期:(
编辑
所以我问他们是如何进行加密。他们使用C#,并使用RijndaelManaged的,从我的知识是不等同于AES。
EDIT2
奥凯终于得到了确切发生了什么事情,他们发错了键
他们正在做以下几点:
填充= PKCS7 CipherMode = CBC 该键被定义为一组十六进制的32字节。 IV也被定义为一组32字节的十六进制数。
当我问他们时,他们拿走了盐。
使用wincrypt.h头文件在CryptoAPI中设置这些内容有多难?
只要你的块大小为128位和你坚持到128位,192位或256位密钥算法的名称,你可以合理假设RijndaelManaged的== AES在具体细节http://blogs.msdn.com/shawnfa/archive/2006/10/09/The-Differences-Between-Rijndael-and-AES.aspx – 2009-10-06 14:27:41
即使你的编辑,你仍然需要知道他们的编码方案'将任意字节转换为可打印字符。另外,您需要确认密码模式。密码分组链接(CBC)? – 2009-10-06 14:29:26