1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CSVのデータを暗号化してURLに格納

Posted at

初めに

自分でアウトプットして記憶にも記録にも残すために書いておきます。

OpenSSLの利用の仕方に戸惑いましたが、
参考URLの一番上のサイトを見て理解を深めました。

送信側

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?php
// 読み取り専用でsample.csvを開きます。
$f = fopen("sample.csv", "r");
// test.csvの行を1行ずつ読み込みます。
while($data = fgetcsv($f)){
    // 1行分の要素すべてを文字列として結合しても空ではない、つまり空行でなければ出力します。
    if(implode($data) != null){

$method = "AES-256-CBC";
$key = "sample";

// $numberを暗号化する
$num = bin2hex( openssl_encrypt( $data[0] , $method, $key, 0, $iv ) );
// $adressを暗号化する
$adr = bin2hex( openssl_encrypt( $data[5] , $method, $key, 0, $iv ) );
?>

<a href="detail.php?name=<?php echo("$num"); ?>&adr=<?php echo("$adr"); ?> ">詳細ページへ</a>

</body>
</html>

受信側

<?php
// URLからnumberデータを取得
if(isset($_GET['name'])) { $name = $_GET['name']; }
// URLからaddressデータを取得
if(isset($_GET['adr'])) { $adr = $_GET['adr']; }
// URLのパラメータを復号化する
$method = "AES-256-CBC";
$key = "sample";

// $numberを復号化する
$dec_num = openssl_decrypt( hex2bin( $name ), $method, $key, 0, $iv );
// $adressを復号化する
$dec_adr = openssl_decrypt( hex2bin( $adr ), $method, $key, 0, $iv );
 ?>
<p><?php echo("$data[2]"); ?></p>

参考URL

PHPのOpenSSLで暗号化して復号する
https://norando.net/php_openssl/
PHPで文字列を暗号化
https://qiita.com/horikeso/items/b8d143fca301d6cf4511
【PHP】URLにプラス(+)文字がある場合の対応方法
https://online-world.jp/blog/contents/?id=13

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?