ゆずめも

メモ的なブログです。主に勉強した事について書いてます。

公開鍵暗号方式でphpを使って暗号化と復号を試した

仕事で公開鍵渡すので〜と言われ、仕組みは知ってるがやったことなかったので
opensslで鍵を作成して、今仕事で使っているPHPを使ってメッセージの暗号化、復号を試したので自分用のメモ

鍵を作る

まずは以下の記事を参考に秘密鍵と公開鍵を作る

qiita.com

#  private key
openssl genrsa 1024 > private-key.pem

# public key
openssl rsa -in private-key.pem -pubout -out public-key.pem

ディレクトリ構成

key_check
├── decrypt.php
├── encrypt.php
├── private-key.pem
└── public-key.pem

phpのコード

Encrypt

まずは公開鍵を使用して「まいやんが世界一かわいい」*1というメッセージを暗号化する。

<?php // encrypt.php
$msg = 'まいやんが世界一かわいい';

// 鍵情報の読み込み
$keyPath = dirname(__FILE__).'/public-key.pem';
$key = file_get_contents($keyPath);

// 結果が$crypted変数に入っている
openssl_public_encrypt($msg, $crypted, $key);

// $cryptedに入っているのはバイナリなのでbase64して表示する
echo base64_encode($crypted).PHP_EOL;

openssl_public_encryptの仕様

PHP: openssl_public_encrypt - Manual

Decrypt

それで表示された文字をdecrypt.phpでデコードする

<?php // decrypt.php
$msg = '/* ここにencrypt.phpの結果として表示されたものを入力する */';

// 鍵情報の読み込み
$keyPath = dirname(__FILE__).'/private-key.pem';
$key = file_get_contents($keyPath);

$decodeBody = base64_decode($msg);

// 結果が$decrypted変数に入る
openssl_private_decrypt($decodeBody, $decrypted, $key);

echo $decrypted . PHP_EOL; // => "まいやんが世界一かわいい"

openssl_private_decryptの仕様

PHP: openssl_private_decrypt - Manual

まとめ

検索すると以外と簡単にできるんですね
ただ普段PHPを触ってないので、毎回file_get_contentsの結果ってどこに保持しておくべきなのかとかよくわからないです。。

たぶんこの案件が終わるとまたPHP触らなくなってしまうので、言語ではなく暗号についてちょっと勉強したい気持ちは出てきたので、積本消化したら次は暗号技術入門とか買ってみようかと考えてます

暗号技術入門 第3版

暗号技術入門 第3版

Ubuntu18.04で2本指スクロールが効かなくなる問題

メインで使っているthinkpadUbuntuがスリープから復帰すると2本指でスクロールできなくなる問題が起きてた

毎回再起動したら直ってたから調べられてなかったんだけど、流石に面倒になってきたので調べたら stackoverflowに根本的には解決しないものの、再起動の煩わしさからは開放される方法があった

askubuntu.com

解決方法

以下のコマンドを実行すると普通に動作するようになる

sudo modprobe -r psmouse
sudo modprobe psmouse

社内LT大会やめた話

以前LT大会企画したって話を書きました

yuzu441.hateblo.jp

今回はそのLT大会やるの辞めましたって話です(実は7月?くらいからやってません

そもそも

上の記事でも書いてますが「tech文化を作りたい」という名目で始めました。

当時はエンジニアが経験だったりを話したり議論する場が無く、なんかそういう文化欲しいなというモチベーションだったんですが
会社がエンジニア集めて月1時間会議をする*1というのを始めた&やっていくとの事だったので、色々理由はあるのですが(後述します)実質目的達成かなとも思ったので社内LT大会を終了しました。

よかった点、悪かった点や思ったことを書くので、これから社内でLT大会やろうと考えてる人や周りの人の少しでも参考になればと思う。

よかった点

周りのエンジニアが何してるのかが知れた

先輩だったり後輩だったり同期だったりが、仕事とかプライベート含めどういった事してるのかが知れるのは、この人そっち方向に興味あるのかとか、そんなもの作ったのかとか知れたのがとても楽しかったです。
発表内容から知らなかった知識とかが知れたり、○○がわからないので△△に聞いてみるかみたいな、所謂誰に相談したらいいんだ問題も少し解決しました。

喋ったことない人から声をかけてもらえる

顔は見たことあるけど、あんまりがっつり話したことないなって人から話しかけてもらえて、話すのは好きだけど話しかけるの苦手な自分としてはとても助かりました。

発表に対する抵抗を減らす

これは実際に効果出る前辞めてしまったんですが、社内の社員相手なので心理的な抵抗はとても低かったです。
滑っても許される文化と言うか、誰かが笑いに変えてくれました。

自己アピールにもなる?

いい会社だったら活動してることを評価してくれるんじゃないかなとは思います。

評価気にして始めた訳じゃないから気にしなかったけど、弊社は特に何もなかったです。

悪かった点

準備

こういうの嫌いじゃないので個人的にはそこまで苦じゃなかったんですが、発表しませんか?と声掛けたりとか、当日の準備とかが少し大変でした。

発表者が偏る

これは完全に自分の努力不足感がすごいんですが
発表すること協力してくれる先輩たちのおかげで盛り上がるものの、毎回発表者が固定化されてきてしまって、結局いつも決まったメンバーが発表してるという状態が生まれてしまった。

努力不足だと言われた

LTの話じゃないけど、「お前の努力(仕事を楽しくしようとする活動)が足りない」と言われた

LT大会企画してやってたのにまだダメなのかと辛い気持ちになってモチベが下がった。

全員がLT楽しめる訳ではない

同じエンジニアでもLTしているのをうるさい騒いでるやつらと感じる楽しめてない人が存在して、裏で叩かれたりしてるの聞いてしまったので、ここで自分のモチベが0になってしまった。

思ったこと

このブログ書いてて、何人に伝わるかわからんけどバナナマンの設楽さんが星野みなみさんに言ってた「文句言ってるだけのやつより頑張ってるじゃん*2」っての思い出して、いろいろあったけど学びがあったので個人的にはやってよかったと思ってる。

何かやろうとすると、発表するって形で手伝ってくれる先輩とかがいたのもやってよかったと思う大きな要因だと思ってる。

最後に自分もまぁいい年になってきたし、自分もやってもらったので、悪い事じゃなければ行動する後輩だったりはどんどん手伝っていきたいと思う。 決してモチベ下げてくるような人にはなりたくない。

*1:もちろん業務時間内

*2:14thシングルの選抜発表の時のですが短くまとめてます