cryptography - Android 购买数据的 Erlang 加密验证

标签 cryptography erlang google-play

我正在使用 crypto:verify 检查 google play 购买信息,作为“错误参数异常”。我想让你知道怎么做。

OrderData = <<"{\"orderId\":\"12999763169054705758.1323507343902706\",\"packageName\":\"...\",\"productId\":\"item1\",\"purchaseTime\":1385090498734,\"purchaseState\":0,\"developerPayload\":\"DEVELOPER_PAYMENT\",\"purchaseToken\":\"...\"}">>),
PublicKeyString = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs4WYUM+LiABp/fp5YHngKjpCslKyhMIosBND3nbgFyrt2bv7Bd8nVl80kOWHPWR8HLUH5u+r8MP9KF7klG8OiWk1GROgs3pHB5BNl2TdOIT6rtnUJXslFqlnGh5IlpShJVUIrO2ADbXmwsN3AviZBw0ZjctfjK5t1UOvptSDGolBl5UtoVZ/TNjpa6QtMPtccGRDNmXAWFrEhTMDLdH+EPeapAmxi/rY0RBDMdobj1UtQdFA+iGlp6adbkjW7xFGWxyjS+dKFbn/jULxILfLVQ3XpGZXQMGW3FvyAvuZBM1ZWHrM4t0aQZGSHsvCste7hMe97lozsuXsb8JdfRjdO..."),
DataSignature = <<"MxauTspbl/1pB8836+sgM8Jw//auJ2VzIhV4JlxAHNJQ2klA20F8m2d/+60Px0MPCPhU478ezn4Jsy168RKjz+dTUjjwgN118uTO8aKjQ8DVwVNVR9FzljFSou2V9hY4TitzEyhl6Iy5B7GqReRsbd4b1YajLkuwRKIt4vSBlamqjVBBbgqGuq8ppRPp15wruRRMJdVHlZXXXmiDw1pd+nr7z9CXVZ0nAyivy9Tq8W1clKUmtHdQt3NtOR4kXiFfiu6+IOAedn1uwV2akfBTd5UD0/PbJeXy8sNWF/2yjzCGbn9HZJqGBG2R9HSehcolvhGI7mAwam8nt7ljkO0Gww==">>),

SizedBinary = fun(Binary) -> <<(size(Binary)):32/integer,  Binary/binary>> end,
Hash = crypto:hash(sha, OrderData),

PublicKey =  base64:decode(PublicKeyString), %% (is valid ???)
Signature1 = base64:decode(DataSignature),   %% (is valid ???)
crypto:rsa_verify(SizedBinary(Hash), Signature1, PublicKey).

** exception error: bad argument
     in function  crypto:rsa_verify_nif/4

最佳答案

验证代码。

{ok, PemBin} = file:read_file("test.pem"),
[RSAEntry] = public_key:pem_decode(PemBin),
{_KeyType, Modulus, Exponent} = public_key:pem_entry_decode(RSAEntry),
RSAPubKey = [Exponent, Modulus],
Signature = base64:decode(?DataSignature),  
crypto:verify(rsa, sha, ?OrderData, Signature, RSAPubKey).
> ok.

关于cryptography - Android 购买数据的 Erlang 加密验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20490222/

相关文章:

javascript - 在 libsodium 中使用哪种 key 对类型?各自有什么不同的能力?

c - AES mixColumns 错误

erlang - Erlang 日志中未知的 ca

google-play - 目前,一些日常应用统计数据出现延迟。我们希望尽快解决问题

go - x509 CheckSignature 参数

java - 如何使用 Bouncy CaSTLe 在 Java 中编辑密码套件列表

Erlang 命令行

erlang - 在运行时检测故障?

sony - 无法识别已发布的Sony Smartwatch 2 App

android - 直接在 Play 商店打开应用