Jump to content
php.lv forumi

hanzaNet norekjinu sistema


Grey_Wolf

Recommended Posts

Vai kaads Reali ir njemies ar HanzaNet norekjinu sistemu ?

Nesanak uzgeneret vajadziigo Atslegu

---

Dotais algoritms ir :

--------------------------------

Digitālā paraksta MAC008 vērtība tiek aprēķināta, izmantojot publisko atslēgu algoritmu RSA un “hash” algoritmu SHA-1. Aprēķinā tiek ņemti vērā arī pieprasījuma parametru garumi, t.s. arī tukšie pieprasījuma lauki.

 

MAC008(x1,x2,…,xn) := RSA( SHA-1(p(x1 )|| x1|| p(x2 )|| x2 || … ||p( xn )||xn),e,n)

kur:

|| - simbolu rindu konkatenācija;

x1, x2, …, xn - pieprasījuma parametri;

p(xi) – parametra garuma funkcija. Funkcija atgriež parametra garumu kā 3-ciparu rindu. Nulles garuma gadījumā – ‘000’.

e, n - RSA parametri.

--------------

 

Siikaak dati seit

Skript algoritms Sheit

 

izveidoju f-ju

function skriptesana($strings)
{
 $strings2=sha1($strings);
 $fp=fopen("mans.key","r");
 $priv_key=fread($fp,8192);
 fclose($fp);
 $res = openssl_get_privatekey($priv_key);
 openssl_private_encrypt($strings2,$crypttext,$res);
 $crypttext2=base64_encode($crypttext);
 return $crypttext2;
}

 

(Strings tiek uzgenerets pareizi )

privata atslega arii ir pareiza, jo ar Publisko var atvert bez prolemam ... Ispejams ka kautkur Esmu pieljavis kljudu ...

Link to comment
Share on other sites

Un vai php funkcija openssl_private_encrypt izmanto tādu pašu rsa enkriptēšanu kā prasīts?

NU vinji itkaa ir noradijushi ka Izmantot OpenSLL biblioteku ... Vai dotaa funkcija izmanto to pashu --> nezinu, tapeec jautaju , varbuut kaads ir veidojis so dalju un var izpaliidzeet...

Link to comment
Share on other sites

Nesanāk atslēgu uztaisīt vai ko..?

 

# SIGN

# make binary signature

/usr/local/ssl/bin/openssl dgst -sha1 -out sample.sig -sign keyfile.pem sample.txt

# encode signature with base64

/usr/local/ssl/bin/openssl enc -base64 -in sample.sig -out sample.b64

 

# VERIFY

# extract public key from certificate

/usr/local/ssl/bin/openssl x509 -in certfile.pem -pubkey -noout -out pubkey.pem

# decode signature

/usr/local/ssl/bin/openssl enc -d -base64 -in sample.b64 -out sample.sig

# verify signature

/usr/local/ssl/bin/openssl dgst -sha1 -verify pubkey.pem -binary -signature sample.sig sample.txt

 

 

/**
* Verifies opensll signature.
* 
* @param string $str Data to verify
* @param string $signature Signature to check
* @return boolean <code>true</code> if signature matches
*/
function _verify($str, $signature) {
$filename1 = tempnam('hanzanet/', 'hansanet1-');
$fd = fopen($filename1, 'w+');
fwrite($fd, $str);
fclose($fd);
$filename2 = tempnam('hanzanet/', 'hansanet2-');
$fd = fopen($filename2, 'w+');
fwrite($fd, $signature);

fclose($fd);

$return = shell_exec('openssl dgst -sha1 -verify hanzanet/bank-pub-key.pem -binary -signature ' . $filename2 . ' ' . $filename1);
unlink($filename1); unlink($filename2);

return strstr($return, 'Verified OK');
}

 

Varbūt noder..

Link to comment
Share on other sites

Nesanāk atslēgu uztaisīt vai ko..?

 

Varbūt noder..

Nesanak nogeneret atslegu kas jasuuta pasham HanzaNEt ( vertiba VK_MAC ) ..

idejiski tiek izveidoots Strings no parejam padodamajam vertiibam un tad ar Privato atslegu + SHA 1 + BASE 64 noskripteets ..

 

 

Jep .. Sitais jau varetu buut ir Stipri tuvak patiesiibai .. vieniigi jaskataas kaa ir ar piekljusanu shellam ...

Link to comment
Share on other sites

Izmantoju Win32OpenSSL, lai uzģenerētu visu nepieciešamo.

Uzģenerēt sertifikātu un privāto atslēgu:

openssl req -newkey rsa:1024 -x509 -out certificate.pem -keyout private_key.pem -sha1 -nodes

 

No privātās atslēgas uzģenerēt publisko atslēgu, kas jāsūta prom:

openssl rsa -pubout -in private_key.pem -out public_key.pem

 

Lai uzģenerētu sertifikāta request:

Openssl req –new –out certificate_request.pem –key private_key.pem

 

No sertifikāta iegūt publisko atslēgu (PHP):

die(shell_exec('openssl x509 -in hanzanet/bank-cert.pem -pubkey -noout -out bank-pub-key.pem 2>1'));

 

Ar šo info būtu jāpietiek..

Link to comment
Share on other sites

Toms --> ne iisti publisko Privato atslegu vajag ...

Tur mazliet ir cits staaats ... Preciizaak vajag digitalo Parakstu kas katru reizi atskjiras , jo atskjiras sakotneji izmantotie dati ...

tb ir NOTEIKTA parauga datu strings (katru reizi atskjiras, jo iekljau Unikalaas vertiibas ..) kursh jasokodee izmantojot RSA + SHA 1 (RSA iznmanto Jau gatavu Privato atslegu ) to visu sapako ar base64 un pievieno Postejamiem datiem ...

Idejiski tas ir lai Banka Var parbaudiit ka Suutiijums tiesam nak no pareizaas puses ... Varetu teikt Autentifikacija ..

Link to comment
Share on other sites

		$signature = shell_exec('openssl dgst -sha1 -sign ' . $keyLocation . ' ' . $filename);
	$VK_MAC = base64_encode($signature);

 

Kur $keyLocation ir tavas atslēgas atrašanās vieta un $filename ir tas fails, kurš satur visu saģenerēto info. Domāju, ka to info, ko tu šeit domāji:

(Strings tiek uzgenerets pareizi )
Edited by Toms
Link to comment
Share on other sites

×
×
  • Create New...