我必须使用hash_hmac连接到API。在hash_hmac的PHP留档中,第四个参数bool$raw_output控制输出是原始二进制数据(true)还是小写六进制(false)。我的程序在PHP中工作,只需将该参数设置为true。
这就是PHP的工作原理:
$signature = base64_encode(hash_hmac('SHA256', $signature_string, $private_key, true))
在谷歌应用程序中,我不能使用任何javascript库(或者我可以吗?)但是有这个功能:Utilities.computeHmacSha256Signaturehttps://developers.google.com/apps-script/reference/utilities/utilities#computehmacsha256signaturevalue-key
但是,它没有PHP所具有的“true”选项,因此它不会输出原始二进制数据。
如何使用Google应用程序获得与PHP相同的值?
这就是我在谷歌应用程序中所做的,但显然它不会输出原始二进制数据:
var signature = Utilities.computeHmacSha256Signature(signature_string, private_key);
我确实找到了一种将响应转换为十六进制(PHP)的方法,相当于FALSE而不是TRUE,但这并没有让我更接近解决方案。
// convert to hex
var signature_in_hex = signature.reduce(function(str,chr) {
chr = (chr < 0 ? chr + 256 : chr).toString(16);
return str + (chr.length==1?'0':'') + chr;
},'');
对我有效的方法是将这些脚本直接复制到谷歌应用程序中:
https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/hmac-sha256.js https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/enc-base64-min.js
然后使用:
var hash = CryptoJS.HmacSHA256(signature, private_key);
var base64 = hash.toString(CryptoJS.enc.Base64);
小提琴:http://jsfiddle.net/c5r78fzm/
问题内容: PHP中的这一行代码评估为true 我需要的是Golang中的一个crypt函数,该函数也将评估为true。 尝试1 我试过了,但评估为假: 尝试2 我还尝试定义和使用在其他地方找到的这个crypt函数,但它也返回false: 所以我的问题是: 我如何获得一个golang地穴功能完全一样的琴弦的PHP crypt函数和? 问题答案: 尽管我还没有找到与PHP的crypt函数完全相同的“
问题内容: 我有这个字符串: 0000000020C90037:TEMP:数据 我需要这个字符串: TEMP:数据。 使用PHP,我可以这样做: 如何像在PHP中一样有效地在JavaScript中使用字符串? 问题答案: 这是您的PHP代码的直接转换:
问题内容: 我正在将应用程序从PHP迁移到Java,并且在代码中大量使用了正则表达式。我遇到了PHP中似乎没有Java等效项的某些问题: 对于正则表达式中的每个匹配项,它都会调用一个函数,该函数将匹配文本作为参数传递给该函数。作为示例用法: 用Java做到这一点的理想方法是什么? 问题答案: 我不知道Java内置有什么类似的东西。您可以使用Matcher类轻松滚动自己的游戏: 然后致电: 请注意,
问题内容: 我在php中将以下语句转换为。 我需要在另一个程序中做同样的事情吗? 有任何想法吗 ? 干杯, 问题答案: 该模块具有,它可以满足您的需求。
问题内容: 真的很喜欢那个功能。 是否有与之等效的Javascript? 问题答案: 在Javascript的“较新”版本中有:解构分配-Javascript 1.7 。它可能仅在基于Mozilla的浏览器中支持,也许在Rhino中也受支持。 编辑: 实际上,如果V8 Javascript库(以及由此而来的Chrome)支持此功能,这也不会令我感到惊讶。 但也不要指望它 现在所有现代浏览器都支持(
问题内容: 我正在寻找一个等效于此php调用的Java: 我使用java.crypto.Mac尝试了此操作,但两者不同意: 键=“ secret”和test =“ test”的输出似乎不匹配。 问题答案: 实际上,他们确实同意。 正如Hans Doggen已经指出的那样,除非将raw输出参数设置为true,否则PHP使用十六进制表示法来输出消息摘要。 如果要在Java中使用相同的符号,可以使用类似
问题内容: 我是Java新手,尽管在PHP方面有很好的经验,并且正在寻找Java中爆炸和爆破(PHP中可用)功能的完美替代品。 我已经用Google搜索了相同的结果,但对结果不满意。任何人对我的问题都有好的解决方案将不胜感激。 例如: 所需的输出: 问题答案: 用于String的Javadoc揭示了您正在寻找的东西。 Java不包括等效的“连接”的“内爆”。您可能只想编写几行代码,而不是像其他答案
问题内容: 我从PHP脚本执行Python脚本时遇到问题。我的客户端使用Bluehost,因此我使用在此描述的easy_install方法为Python安装了第三方模块(numpy):https ://my.bluehost.com/cgi/help/530?step = 530 为了演示我的问题,我创建了两个python脚本和一个PHP脚本。 hello.py包含: hello-numpy.py