私は、サーバー/データベースと通信するために必要なアンドロイドアプリの開発を始めました。サーバー側では、PHPを使用してデータを収集したり、クエリを実行したりします。私はセキュリティ(XSS、SQLインジェクションなど)について多くのことを読んでいます。私はまた、クライアント&サーバー間で送信されるデータを暗号化したいと思いますので、私はPHPでのopenssl-機能を扱うようになりました。openssl_seal&openssl_open(両方ともPHP)で公開秘密鍵暗号のアンドロイド対応とは何ですか?
openssl_seal-とopenssl_open-機能は、この目的のために良いように思われます。 (暗号化する/暗号化された)「B」はランダムキーopenssl_sealによって生成され、復号化のために使用される
function encryptRnd($data) {
$pubKey = file_get_contents("public.key");
$publicKeys = array(openssl_pkey_get_public($pubKey));
$res = openssl_seal($data, $encryptedData, $encryptedKeys, $publicKeys);
return array("data" => base64_encode($encryptedData), "rndKey" => base64_encode($encryptedKeys[0]));}
function decryptRnd($credentials) {
$privateKey = openssl_get_privatekey(file_get_contents("private.key"));
$result = openssl_open(base64_decode($credentials["data"]), $decryptedData, base64_decode($credentials["rndKey"]), $privateKey);
if (!$result) echo "ERROR during decryption.\n";
return $decryptedData;}
「が」データである: 私はこの2つの機能を書きました。
2キーファイルhabeのPrivateKeyファイルの
- "openssl.exe genrsa -out private.key 1024" を使用してWindows上で生産されて
- 「openssl.exe RSA -in private.key - パブリックキーファイルの場合はpublic.pem -outform PEM -puboutを入力してください。
PHP内では、これはすべて期待通りに動作します。
しかし、どのようにアンドロイドに同じ技術を実装する(と私は初心者ですか!)?
私は例がPHP側でopenssl_sealと組み合わせて使用するためのWebを検索するが、作業は何も見つかりませんでした。
- 私はAndroid側でデータを暗号化し、 をPHPで復号化したいと考えています。
- 、サーバが暗号化されたデータを送信しているとき、これは(私が想定する第二のPrivateKey /公共のペアで)のAndroid側で復号化されなければならない
私も(hereを述べたが、それが機能しなかった例を実装PHP側ではopenssl_private_decryptは常にFALSEでした)。だからそれは私には役立ちませんでしたが、Android => PHPの暗号化には他の方法はありませんでした。
合計:私はAndroidとPHPの間で送信されたデータを暗号化して復号化する方法を探しています。受信側だけがデータを復号化できるようになっています。誰かが私に例や手がかりを与えることができますか?
btw:私はpublic-privatekey-encryption **を考えました。**私は、メッセージの受信者だけがメッセージを解読できるように、私のアプリに鍵(解読用)を保存したくないからです。 – MojitoJoe