2016-05-25 5 views
0

私は現在、データベースに暗号化されたデータとして一時的に保存したいデータを扱っています。私はデータベースがハッキングされるのではないかと心配しているだけで、データを入力した人たちが自分自身以外の人によって到達できないようにしたい。 (と私はもちろん)文字列の中のデータをPHPの数値に変換する

私はAPIを使ってサードパーティのアプリケーションにエクスポートしているので、データは永久にデータベースに格納されるわけではありませんが、レート制限があるのでデータを保存する必要があります私たちのデータベースには限界が終わり、私はそれをアップロードすることができます。

処理(レート制限を仮定すると発生):

Iは、フォームから受け取った要求は、私は(シリアライズしてので(私はアンシリアライズします長い文字列を取得する配列)を開始するために、アレイ内にあります)後で。 次に、文字列を数値に変換し、情報を失うことなく元に戻す方法を使用したいと思います。

データを数値に変換する理由は、数値をエンコードするだけのHashIdsライブラリを使用するためです。私の知る限りでは、それは追加するのが嬉しいセキュリティの余分な層です。

はここHashIdsにもっと読むhttp://hashids.org/

私が試してみました何:

  • 私は小数に、その後16進数を16進数に文字列を変換しようとした、と。残念ながらその数は大きすぎて、私はそれでbigintegerを使って運がなかった。

  • base64_encode()は、データを数値に変換するのではなく、base_convertingするものです。しかし、明らかにそれはむしろ奇妙なので、私はPHPのベース変換を把握できませんでした。

結論:

私はあまり手間をかけずにデータに逆変換することができ、短いエンコードされた文字列の中に、私は、フォームのリクエストから受信していたデータを変換するにはどうすればよいですか?私はPHPが提供するすべてのオプションをあまり知らない。

UPDATE:

このスレッドを締結することを、私は自分のシリアル化された配列を暗号化するためにOpenSSLを使用して終了しました。私が遭遇した問題はリクエストにファイルが含まれていて、それをシリアル化してオブジェクトをデータベースに保存できない場合だけでした。サードパーティのアプリケーションではファイルがマルチパート/フォームデータオブジェクトであると予想しているので、私はまだこれを回避する方法が必要です。ファイルパスをデータベースに保存してアップロードするだけでは問題ありません。しかし、私はそれを後で見つけなければならないと思う。

答えて

0

このリンクhttp://hashids.org/はかなり明確な例です。整数が15と仮定します。

$hashids = new Hashids\Hashids('some random string for a salt. Make sure you use the same salt if you want to be able to decode'); 

$encoded = $hashids->encode(15); 
print_r(['hashedId' => $encoded]); 

$decoded = $hashids->decode($hashed); 
print_r(['decoded' => $decoded]); 

だから $decodedの値は15

更新

申し訳ありませんが等しくなければならない - あなたの質問のhashidsビットは私を投げ、そのように、私はあなたが求めていたものを誤解しました。あなたは本当にOPが整数に `な`「ここにいくつかのスーパー秘密データ」として、文字列を変換しようとしているhttps://secure.php.net/openssl_encrypthttps://secure.php.net/manual/en/function.openssl-decrypt.php

+0

を使用しなければならないので、彼はそれを暗号化することができ

:私は私の答えを更新しますハッシュコードで明らかに、これは奇妙なことですし、hashidsは明らかに仕事のためのツールではありませんが、これはOPの質問への答えではありません – Steve

+0

こんにちは@Steveはあなたがお勧めする良い方法はありますか?私は提案を公開しているので、これはプロジェクトで他の理由で既にHashIdsを使用しているため、これが最初に気になったことです。 – Kjaal

+0

@Kjaal暗号化は難しいです。キーがデータと同じ場所に保存されている場合は、セキュリティが大幅に向上しません。私はそのことをあなたに伝えるのに十分だと知っていますが、あなたに解決策を与えるのに十分ではありません。あなたが誠実に「フォームに入力されたすべてのデータは暗号化されています」と言うことができるのであれば、 openssl_encrypt()/ openssl_decrypt() 'ユーザーの入力 – Steve

関連する問題