从这个问题中,我找到了splitutilty,它接受一个文件并将其分成大小均匀的块.默认情况下,它将这些块输出到新文件,但我想将它输出到stdout,由换行符(或任意分隔符)分隔.这可能吗?
我试过了 cat testfile.txt | split -b 128 - /dev/stdout
因错误而失败split: /dev/stdoutaa: Permission denied.
看一下帮助文本,似乎这告诉split使用/ dev/stdout作为文件名的前缀,而不是写入/ dev/stdout本身.它不表示使用分隔符直接写入单个文件的任何选项.有没有办法可以欺骗split这样做,还是有不同的实用工具可以实现我想要的行为?
我正在开发一个使用应用内购买的 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 字符串中可以用我的公钥进行加密验证的任何部分。我是否应该使用字符串的某些部分,或者我只是不明白签名是如何工作的?