我正在与合作伙伴进行集成,该合作伙伴使用 JavaBigInteger
生成字节数组作为简单加密算法的密钥。我试图在没有太多运气的情况下找到等效的 .NET 代码。
他们使用的 Java 代码是:
String keyString = "48B734DA47388C656913C9BF5146E186";
byte key[] = new BigInteger(keyString, 16).toByteArray();
产生以下byte
数组:
[72, -73, 52, -38, 71, 56, -116, 101, 105, 19, -55, -65, 81, 70, -31, -122]
仅此一项就令人不安,因为byte
.NET 中的 s 范围为 0-255,因此负值超出范围。
我想出的最接近的 .NET 代码是:
string keyString = "48B734DA47388C656913C9BF5146E186";
byte[] key = BigInteger.Parse(keyString, NumberStyles.HexNumber).ToByteArray();
产生以下byte
数组:
[134, 225, 70, 81, 191, 201, 19, 105, 101, 140, 56, 71, 218, 52, 183, 72]
在这一点上,我认为 .NET 等价物根本不可能——尤其是因为负值byte
。
我期待大家的想法。