我们必须为外部接口实现加密。接口的所有者提供了有关如何在我们这边执行相同加密的文档。但是,此文档使用 C# 编写,而我们使用 PHP。
我们理解的大部分部分,除了它们似乎将哈希类型转换为 int 的地方。他们的代码如下:
// hashString exists and is a md5 a like string
int[] keyBuffer = new int[hashString.length];
for (int i=0; i<hashString.length; i++) {
keyBuffer[i] = (int)hashString[i];
}
在 PHP 中,当将一个字母转换为 int 时,会得到 0(int)。由于我们无法想象这就是第三方的意思,我们相信 C# 做了其他事情。
C# 是否也转换为 int 0,或者可能转换为 char?
其次,原始的 hashString 是 320 长。这意味着代码将创建一个 320 长的 int?在 PHP 中,您没有像 C# 那样保留内存的想法。但是当我们尝试将一个 320 长的字符串类型转换为一个 int 时,我们得到一个长度为 19 个“字符”的 int。
在字符串中键入一个非常长的“数字”时,C# 是否也会创建一个较短的 int?