0
我想在Android中对消息进行签名并验证Node.js Web应用程序中的签名。将Java公共DSA或RSA密钥转换为Node可以识别的格式
在Android方面,我创建的关键如下:
KeyPairGenerator generator = KeyPairGenerator.getInstance("DSA");
generator.initialize(dsabits, sr);
KeyPair keyPair = generator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
FileOutputStream fos = new FileOutputStream(filename);
fos.write(publicKey.getEncoded());
fos.close();
现在我想用该公钥来验证邮件中的Node.js:
var messageBase64 = "SGVsbG8gRmVsaXgh";
var signatureBase64 = 'MCwCFF9mV7/m3D8qjJKZSj3JMtqEmCQmAhQk9wSVnyOQgvUd5/n/iGAr4cNxLw=='
var crypto = require('crypto');
var fs = require('fs');
var verify = crypto.createVerify('dsaWithSHA');
var buffer = new Buffer(messageBase64, 'base64');
verify.update(buffer);
var key = fs.readFileSync('./keys/public.key');
var isValid = verify.verify(key, signatureBase64 , 'base64');
我如何将Java生成的密钥文件转换为Node可以读取的文件?或者我怎么能创建一个我可以在两个中使用的密钥对?