【发布时间】:2014-01-07 16:41:23
【问题描述】:
我想在 Android 中签署消息并在 Node.js 网络应用中验证签名。
在 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 可以读取的文件?或者如何创建一个可以在两者中使用的密钥对?
【问题讨论】:
标签: java javascript android node.js cryptography