小编eca*_*one的帖子

将`split`实用程序的输出发送到stdout

这个问题中,我找到了splitutilty,它接受一个文件并将其分成大小均匀的块.默认情况下,它将这些块输出到新文件,但我想将它输出到stdout,由换行符(或任意分隔符)分隔.这可能吗?

我试过了 cat testfile.txt | split -b 128 - /dev/stdout

因错误而失败split: /dev/stdoutaa: Permission denied.

看一下帮助文本,似乎这告诉split使用/ dev/stdout作为文件名的前缀,而不是写入/ dev/stdout本身.它不表示使用分隔符直接写入单个文件的任何选项.有没有办法可以欺骗split这样做,还是有不同的实用工具可以实现我想要的行为?

bash split stdout

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

Google Play 结算响应签名验证

我正在开发一个使用应用内购买的 Android 应用程序。用户购买后,Play 商店会以 JSON 字符串形式发送响应。该响应看起来像这样(当然,没有编辑敏感信息):

{  
   "type":"android-playstore",
   "id":"<My Application ID>",
   "purchaseToken":"<The Purchase Token>",
   "receipt":{  
      "orderId":"<The Order ID>",
      "packageName":"com.example.skeleton",
      "productId":"credit.basic",
      "purchaseTime":1436546971245,
      "purchaseState":0,
      "purchaseToken":"<The Purchase Token>"
   },
   "signature":"Im27prAnxYwdRoug..."
}
Run Code Online (Sandbox Code Playgroud)

Google Play 结算安全文档指出

Google Play 对包含采购订单响应数据的 JSON 字符串进行签名。Google Play 使用开发者控制台中与您的应用程序关联的私钥来创建此签名。

我不太擅长加密,但我的理解是 RSA 签名的工作原理是获取要签名的字符串的 SHA1 哈希值,然后使用私钥对其进行加密以生成签名。当想要验证字符串的来源时,使用公钥对签名进行解密(证明它是使用私钥加密的),并将解密的哈希值与消息的哈希值进行比较,看看它们是否匹配。

然而,这里有一个问题。签名本身包含在发送到我的应用程序的 JSON 字符串中。您无法在签名后更改字符串,因此当 Google 说他们“对包含响应数据的 JSON 字符串进行签名”时,它们并不意味着我收到的整个 JSON 字符串。他们必须签署字符串的某些部分并将签名附加到该部分。我的问题是我无法弄清楚字符串的哪一部分已签名。使用此问题中描述的签名验证实现,我尝试验证删除了签名属性的 JSON 字符串,不带括号,仅包含收据部分等。为了更好地衡量,我尝试了整个字符串,包括签名。我似乎找不到这个 JSON 字符串中可以用我的公钥进行加密验证的任何部分。我是否应该使用字符串的某些部分,或者我只是不明白签名是如何工作的?

encryption android rsa sign google-play

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

标签 统计

android ×1

bash ×1

encryption ×1

google-play ×1

rsa ×1

sign ×1

split ×1

stdout ×1