皆さん!AS3 RSAKey.sign()!= PHP openssl_sign()
テキストに署名するためのPHPコードがあり、正常に動作します。私はこのコードをactionscript 3に相当する必要があります。私はあなたの助けが必要です。私は看板にするためにas3cryptoライブラリを使用して、AS3では
$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());
}
私は、同じ秘密鍵ファイルを持っています。私は、出力値が等しいことを期待しています。しかし、これらの値は、私が間違っているのは何 (=異なる
UPDATE:私は、公開鍵を使用して、私のエンコードされたbase64文字列を検証し、方法を検証してみました - すべてはActionScriptの内部okです 例:?。
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());
私のオリジナルテキストと復号された値が等しいです。だから、私はAS3の署名方法はPHPよりも異なっていると結論付けている。 誰もがそれに等しい作るためのアイデアを持っていますか?
感謝。
こんにちはSergeevイワンは、私は問題を記述してみましょう: openssl_signは()データからダイジェストを作成し、署名を作成するためにrsaKey.signを使用していながら、約種類の を消化し、そのデフォルトの暗号化機能がOPENSSL_ALGO_SHA1 で情報を暗号化するので、両方の署名異なっています –
JKパテル、ご意見ありがとうございます。さて、私はそれを得ましたが、私の仕事はまだ実際です。私はopenssl_sign()のクローンを持つ必要があります。はい、それはアップワーク上の私のポストです –