我有一个应用程序,需要验证来自不同用户的数字签名。这些用户正在编程使用不同的语言/平台,例如.NET,JAVA,C等;但是可能会在Erlang / OTP中开发应用程序。当我测试来自Erlang / OTP平台的应用程序时,一切都可以按预期工作,但是从其他平台使用时,它将失败。
这是验证签名的部分。
Signature - Base64 enconded string digital signature as
recieved from users.
SignBinData - is obtained by reconstructing a String (using data
that was md5 digested and used to generate the signature), that is,
SignBinData = term_to_binary(String)
Then verifying the signature using
public_key:verify(SignBinData, md5, base64:decode(Signature), UserPublicKey).
我使用以下方法在Erlang / OTP中测试此实现:
term_to_binary/1
将字符串转换为二进制。我的问题是,当我使用term_to_binary/1
来管理二进制文件时,我的用户不知道该二进制文件,并且该二进制文件不适用于他们,因此使用自己适用的方法(如Java中的方法); < / p>
... some left out code ...
String s = SignatureStringData;
byte[] data = s.getBytes("UTF-8");
signature.update(data);
byte[] digitalSignature = signature.sign();
生成数字签名,我发现无法验证。
我的问题是,我在Erlang中实现它的方式是处理来自Erlang中所有其他平台的数字签名的通用方式,还是还有另一种方式,仅适用于Erlang / OTP用户?谢谢。