- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个脚本可以在 CFML 中输出一个类似 hash_hmac 的函数:
<cfprocessingdirective pageencoding = "iso-8859-1">
<cfset msg = "AgostinoSqueglinPiccolinMonachin">
<cfset jMsg = JavaCast("string",msg).getBytes() />
<cfset jKey = JavaCast("string","cicciolin").getBytes() />
<cfset key = createObject("java","javax.crypto.spec.SecretKeySpec") />
<cfset mac = createObject("java","javax.crypto.Mac") />
<!--- this line had to be changed to the 256 version --->
<cfset key = key.init(jKey,"hmacSHA256") />
<cfset mac = mac.getInstance(key.getAlgorithm()) />
<cfset mac.init(key) />
<cfset mac.update(jMsg) />
<cfset cc = mac.doFinal()>
<cfset strBase64Value = ToString( cc,"Utf-8" ) />
<cfscript>
writeDump(msg);
writeDump(strBase64Value);
</cfscript>
这应该输出与此 php 相同的结果:
<?php
$uu = hash_hmac('sha256', "AgostinoSqueglinPiccolinMonachin", "cicciolin", true);
echo $uu;
?>
但我得到了不同的结果,可能是由于格式错误:
ColdFusion : �GK�襍}�}��B�}9w�(��u�m�
PHP: ÐGKÒè¥}Ÿ»}©ì¬B§}9w´(«æüu§mÃ
似乎有些字符没有以正确的方式输出。
我该如何解决这个问题?
更新:
该解决方案完美运行,但如果我尝试对新行进行编码,则会出现其他问题:
例如
PHP:
$sign = "GET\n" . "agostinsqueglin" . "". "piccolin";
$uu = base64_encode(hash_hmac('sha256', $sign, "cicciolin", true));
如果我尝试:
sign = "GET#chr(13)##chr(10)#" & "agostinsqueglin" & "" & "piccolin";
我得到了两个不同的结果。
这是由于 coldfusion 处理“\n”换行符的方式...
最佳答案
您提供的代码比它需要的要冗长一点,而且...好吧,这是一个改进的版本:
<cfscript>
msg = "AgostinoSqueglinPiccolinMonachin";
key = "cicciolin";
algorithm = "HmacSHA256";
encoding = "iso-8859-1";
secret = createObject('java',"javax.crypto.spec.SecretKeySpec").init( charsetDecode(key,encoding) , algorithm );
mac = createObject('java',"javax.crypto.Mac").getInstance(algorithm);
mac.init(secret);
digest = mac.doFinal( charsetDecode(msg,encoding) );
writeDump( msg );
writeDump( toString(digest,encoding) );
</cfscript>
这是基于此处的答案和评论:Calculate HMAC-SHA256 digest in ColdFusion using Java
显然,对于常规使用,它应该包含在合适的函数中。
关于ColdFusion hash_hmac256 输出格式/编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14545766/
我有生成 hash_hmac 的 php 代码 $concate=array(); $validation_token = hash_hmac('md5', implode("|", $concate
我正在开发一个新的 moodle 模块,它提供与 Windows Live 的集成。 使用实时身份验证时,我得到一个空白页面。打开 PHP 错误记录并获取: Fatal error: Call to
我需要签署我的亚马逊产品 API 请求,接受的代码如下。 base64_encode(hash_hmac('sha256', $request, $key, true)); 这在我使用 64 位 Li
阅读 this excellent answer关于密码散列和想知道如何实现它: The Wicked Flea写道: Generate a nonce for each user; this alo
我想知道,有没有办法在erlang中实现hash_hmac("sha256", $token, $signkey, true) (php)? 最佳答案 看看http://erlang.org/doc/
什么是等效的: hash_hmac('sha256', 'data', 'key') 如果我使用的是 openssl_*? openssl_digest 不接受 $key 参数。 最佳答案 此函数使用
$key = "12345678876543211234567887654321"; $iv = "1234567887654321"; $plaindata = "This is a test st
我正在尝试转换这个 php 函数: string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output =
我刚刚从这个站点获得了一个函数,它描述了如何使用哈希生成安全密码。功能如下 function hash_password($password, $nonce) { global $site_key
我正在尝试为以下项目编写 python 身份验证机器人:https://comkort.com/page/private_api 没有完整的 php 示例。我猜有人可以把它放在这里。 只有一段php代
我是新来的,我有问题。 你能告诉我为什么 hex_hmac_sha1(Javascript 函数)不如 hash_hmac(PHP 函数)好吗。 如果是 A-z 字母就没问题,但其他字符就不行。 例如
我有以下 PHP 函数 public function encodePassword($raw, $salt) { return hash_hmac('sha1', $raw
我有在我的 PHP 应用程序中运行的代码。在 PHP 中,我使用以下代码对 url 进行签名: private static function __getHash($string) { ret
我在 stack-overflow 中看到了一些相同的问题,但它对我没有帮助。 我有这个 php 代码 $signature=base64_encode(hash_hmac("sha256", tri
我正在创建一个更安全的用户密码表,其中包含用户名、强随机盐和 PHP 中的加盐/散列密码,如下所示: $salt = bin2hex(openssl_random_pseudo_bytes(64));
我正在将 PHP 应用程序移植到 C++。 PHP 应用程序正在使用此函数: hash_hmac — Generate a keyed hash value using the HMAC method
我有生成 hash_hmac 的 php 代码 key = base64_encode(hash_hmac('sha1',$public_key, $private_key,TRUE)); 我已经尝试
我遇到 hash_hmac 和 AWS 签名版本 4 的问题。我正在使用他们在此处列出的示例:http://docs.aws.amazon.com/general/latest/gr/sigv4-ca
我正在移植一个php脚本到node,我对加密不是很了解。 php脚本使用了这个函数: hash_hmac('sha512', text, key); 因此,我需要在 Node js 中实现一个函数,以
这个问题在这里已经有了答案: Implementation HMAC-SHA1 in python (8 个回答) 关闭5年前。 我想将我的访问者转发到第 3 方支付网站。该第 3 方将处理他们的付款
我是一名优秀的程序员,十分优秀!