小编Nox*_*mon的帖子

在Android上验证数字签名

我正在开发一个需要数字签名html文档的Android应用程序.该文档以JSON格式驻留在DB中.我正在使用我在其他一些SO问题上找到的BASH脚本在本地签署文档:

openssl dgst -sha1 someHTMLDoc.html > hash openssl rsautl -sign -inkey privateKey.pem -keyform PEM -in hash > signature.bin

使用以下代码生成私钥:

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:3 -out privateKey.pem 
Run Code Online (Sandbox Code Playgroud)

使用以下公式生成公钥:

openssl pkey -in privateKey.pem -out publicKey.pem -pubout
Run Code Online (Sandbox Code Playgroud)

我想在应用程序中验证Signature.bin中创建的签名以及someHTMLDoc.html中的数据.

我发送html和签名作为JSON对象ex:

{ "data" : "<html><body></body></html>", "signature":"6598 13a9 b12b 21a9 ..... " }
Run Code Online (Sandbox Code Playgroud)

android应用程序将PublicKey保存在共享首选项中,如下所示:

-----BEGIN PUBLIC KEY----- MIIBIDANBgkqhkiG9w0AAAEFAAOCAQ0AvniCAKCAQEAvni/NSEX3Rhx91HkJl85 \nx1noyYET ......

注意那里的"\n"(换行符)(从publicKey.pem复制字符串到Android Gradle Config时自动添加.

好的,经过一切准备,现在的问题.我试图验证密钥没有成功.

我使用以下代码:

private boolean verifySignature(String data, String signature) {
    InputStream is = null;
    try {
        is = new …
Run Code Online (Sandbox Code Playgroud)

java android json digital-signature

5
推荐指数
1
解决办法
4150
查看次数

标签 统计

android ×1

digital-signature ×1

java ×1

json ×1