Herkes!AS3 RSAKey.sign()! = PHP openssl_sign()
Bazı metni imzalamak için bazı PHP kodum var ve iyi çalışıyor. Bu kodun actionscript 3'e eşdeğer olması gerekir. Yardımınıza ihtiyacım var. Ben işareti yapmak as3crypto kitaplığını kullanarak AS3 olarak
$privateKeyPath = "private.key";
$message = "hello";
$privateKey = file_get_contents($privateKeyPath);
openssl_sign($message, $signature, $privateKey);
echo base64_encode($signature);
:
private function readPrivateKey():String {
var f:File = new File("/Users/ivan/Desktop/private.key");
var fs:FileStream = new FileStream();
fs.open(f,FileMode.READ);
var key:String = fs.readUTFBytes(fs.bytesAvailable);
fs.close();
return key;
}
private function getSign():void {
var message:String = "hello";
var privateKey:String = readPrivateKey();
var srcBA:ByteArray = new ByteArray();
var resultBA:ByteArray = new ByteArray();
var rsaKey:RSAKey;
var base64encoder:Base64Encoder = new Base64Encoder();
srcBA.writeUTFBytes(message);
rsaKey = PEM.readRSAPrivateKey(privateKey);
rsaKey.sign(srcBA, resultBA, srcBA.length);
b64encoder.encodeBytes(resultBA);
trace(b64encoder.toString());
}
aynı özel anahtar dosyası var. Çıkış değerlerinin eşit olduğunu tahmin ediyorum. Ama bu değerler yanlış yapıyorum (= farklıdır
GÜNCELLEME: Ben genel anahtarı kullanarak kodlanmış base64 dize doğrulamak ve yöntemi doğrulamak için çalıştı - her şey Actionscript içindeki ok Örnek:?.
var text:String = "hello";
var srcBA:ByteArray;
var desBA:ByteArray;
var rsaKey:RSAKey;
var encodedB64:String;
// ENCODING
srcBA = new ByteArray();
srcBA.writeUTFBytes(text);
desBA = new ByteArray();
rsaKey = PEM.readRSAPrivateKey(readPrivateKey());
rsaKey.sign(srcBA, desBA, srcBA.length);
encodedB64 = Base64.encodeByteArray(desBA);
trace("Original: " + text);
trace("Encoded: " + encodedB64);
// DECODING
var srcBA2:ByteArray = new ByteArray();
var desBA2:ByteArray = new ByteArray();
var rsaKey2:RSAKey = PEM.readRSAPublicKey(readPublicKey());
srcBA2 = Base64.decodeToByteArray(encodedB64);
rsaKey2.verify(srcBA2, desBA2, srcBA2.length);
trace("Decoded: " + desBA2.toString());
orijinal metin ve deşifre değer eşittir. Yani, AS3 imzalama yöntemleri PHP farklıdır olduğu sonucuna vardır Benim. kimsenin ona eşittir yapmak fikrin var mı?
teşekkürler.
Merhaba Sergeev Ivan, beni konu tarif edeyim farklı –
JK Patel, yorumunuz için teşekkür ederiz. Tamam, anladım ama görevim hala geçerli. Openssl_sign() 'ın klonuna ihtiyacım var. Evet, bu benim çalışmamda –