arasındaki Sha1 Sonucu Farkı Şu anda Royal Mail API'sıNodeJs ve SOAP kullanarak bir çağrı yapmaya çalışıyorum; Ben bir örnek piton senaryo şöyle piton scriptNode & Python
aşağıdaki güvenlik başlıkları uygulanmasını yeniden zorluk yaşıyorum çıkışı
#!/usr/local/bin/python2.7
import os
import sha
import binascii
import base64
password = 'test'
CREATIONDATE = '2016-03-29T14:03:46Z'
nonce = '7715776714'
HASH = sha.new(password).digest()
BASE64PASSWORD = base64.b64encode(HASH)
digest = sha.new(nonce + CREATIONDATE + HASH).digest()
PASSWORDDIGEST = base64.b64encode(digest)
ENCODEDNONCE = base64.b64encode(nonce)
print 'NONCE = ', nonce
print 'BASE64PASSWORD', BASE64PASSWORD
print 'PASSWORDDIGEST ', PASSWORDDIGEST
print 'ENCODEDNONCE ', ENCODEDNONCE
print 'CREATIONDATE ', CREATIONDATE
:
NONCE 7715776714
BASE64PASSWORD qUqP5cyxm6YcTAhz05Hph5gvu9M=
PASSWORDDIGEST coDzcnSZObFfrM0FY33GcfxjOj4=
ENCODEDNONCE NzcxNTc3NjcxNA==
CREATIONDATE 2016-03-29T14:03:46Z
kullanıyorum bu yeniden oluşturduk NodeJs ama ben farklı bir çıkış elde etmek gibi görünüyor - python sürümünde doğru şifre girerek ve elde edilen verileri kullanarak API için geçerli bir çağrı yapmak için izin verir, NodeJs çıkışını kullanarak bana bir yetkilendirme hatası veriyor
0 HASH Sha aynıdır, ancak ikinci Sha (digest) NodeJs sürüm farklı bir sonuç verirNONCE 7715776714
BASE64PASSWORD qUqP5cyxm6YcTAhz05Hph5gvu9M=
PASSWORDDIGEST FRMDpkDOi1j9KB/sDHg1b7BYQgA=
ENCODEDNONCE NzcxNTc3NjcxNA==
CREATIONDATE 2016-03-29T14:03:46Z
verir
Düğüm Js Kod
var createdDate, password = 'test', nonce;
createdDate = '2016-03-29T14:03:46Z';
nonce = '7715776714';
var crypto = require("crypto"),
passHash = crypto.createHash('sha1'),
digestHash = crypto.createHash('sha1');
passHash.update(password);
var HASH = passHash.digest();
console.log('NONCE ' + nonce)
console.log('BASE64PASSWORD ' + base64_encode_string(HASH))
digestHash.update(nonce + createdDate + HASH);
var digest = digestHash.digest();
var PASSWORDDIGEST = base64_encode_string(digest);
console.log('PASSWORDDIGEST ' + PASSWORDDIGEST);
var ENCODEDNONCE = base64_encode_string(nonce.toString());
console.log('ENCODEDNONCE ' + ENCODEDNONCE);
console.log('CREATIONDATE ' + createdDate);
Öyle görünüyor. Nereye gittiğime dair işaretçiler var mı? Ben
'sha' modülü kullanımdan kaldırıldı,' hashlib' kullanmak yerine akıllıca olabilir –