首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Amadeus创建密码摘要

为Amadeus创建密码摘要
EN

Stack Overflow用户
提问于 2020-08-14 03:47:33
回答 2查看 455关注 0票数 1

我遵循文档中的说明,并试图在Node中执行相同的公式,但是,在接收到11|Session|响应时,我无法正确地对服务器进行身份验证。我假设错误是由于错误地设置了nonce和/或密码摘要。

公式:Base64(SHA1($NONCE + $TIMESTAMP + SHA1($CLEARPASSWORD)))

变量:$CLEARPASSWORD=AMADEUS$TIMESTAMP=2015-09-30T14:12:15Z$NONCE=c2VjcmV0bm9uY2UxMDExMQ==

预期的散列:+LzcaRc+ndGAcZIXmq/N7xGes+k=

我试过的代码是:

代码语言:javascript
复制
const crypto = require('crypto')
const hashedPassword = crypto.createHash('sha1').update(CLEARPASSWORD).digest() // Returns a buffer
crypto.createHash('sha1').update(NONCE + TIMESTAMP + hashedPassword).digest('base64') // Returns a Base64 String

但是,这将返回DDcZEaS5AtoVaZhsARy9MqV+Y34=。如果我将现在改为它的普通字符串secretnonce10111,那么我得到的gHOoqyDb9YJBrk30iabSO8nKxio=仍然是不正确的。

我不知道会有什么问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-18 02:51:56

我终于弄明白了到底是怎么回事。问题是,我试图连接一个字符串和一个缓冲区,而我应该从一开始就让所有的东西都成为一个缓冲区。

所以,而不是

代码语言:javascript
复制
const hashedPassword = crypto.createHash('sha1').update(CLEARPASSWORD).digest()
crypto.createHash('sha1').update(NONCE + TIMESTAMP + hashedPassword).digest('base64')

它应该是

代码语言:javascript
复制
const buffer = Buffer.concat([Buffer.from(NONCE), Buffer.from(TIMESTAMP), nodeCrypto.createHash('sha1').update(CLEARPASSWORD).digest()])
const hashedPassword = nodeCrypto.createHash("sha1").update(buffer).digest("base64")
票数 1
EN

Stack Overflow用户

发布于 2022-01-07 07:49:08

代码语言:javascript
复制
you can use this php code to generate Digest Password

<?php
date_default_timezone_set('UTC');
$t = microtime(true);
$micro = sprintf("%03d",($t - floor($t)) * 1000);
$date = new DateTime( date('Y-m-d H:i:s.'.$micro) );
echo $timestamp = $date->format("Y-m-d\TH:i:s").$micro . 'Z';
$nonce = mt_rand(10000000, 99999999);
echo $nounce = base64_encode($nonce);//we have to decode the nonce and then apply the formula on it and in xml we have to send the encoded nonce
$password = "AMADEUS"; //clear password
echo $passSHA = base64_encode(sha1($nonce . $timestamp . sha1($password, true), true));   
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63406227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档