我正在学校开展一个项目,我们在网络上建立了一个简单的密钥分发中心,用河豚加密.我已成功编码并使其在同端机器上运行.当我必须将它发送到另一个端点的机器时,问题就出现了.密钥作为字符数组加密,并通过网络发送和接收.在任一端打印加密密钥时,它会显示相同的加密字符串,但解密失败.我试过反转数组的顺序和解密,但结果是一样的.
我的问题:
>在这种情况下,我对char数组的反转是否是处理endian问题的正确方法?
>问题可能是它已经在一个端面样式的机器上加密了,并且在小端机器上无法用相同的算法解密吗? (这是我使用的河豚版本:http://www.codeproject.com/KB/security/blowfish.aspx)
最佳答案 这取决于算法实现.查看
implementation your are using(查看BytesToBlock和BlockToBytes函数),它将字节块转换为无符号整数.
此转换依赖于endian,因此必须根据正在运行的机器的字节顺序来调整算法.