🐥

Rで画像にメッセージを隠してやりとりする

2024/07/02に公開

誰かと何の変哲もないやりとりをしながら、そのやりとりに別のメッセージを埋め込みたい。
そんなことを思ったことありませんか?

それを解決するのがステガノグラフィという手法です。
これは画像などにメッセージなど別の情報を埋め込むものです。

今回は下記の画像にRでメッセージを埋め込んでみましょう。
何の変哲もない社内パーティの画像です。
これは社内で親しくしている人に共有したいとします。

Rで画像を使ったステガノグラフィを実行する際はstegasaurパッケージを使います。
ステガノグラフィと恐竜のステゴサウルスをかけてるんですね。ユニークですね。
これはGitHubからインストールしてください。

# GitHubからインストール
remotes::install_github("richfitz/stegasaur")
library(stegasaur)

メッセージを埋め込む

それでは、上記画像に「明日は20時にいつもの店で」というメッセージを埋め込んでみましょう。
メッセージの埋め込みにはencode()を使います。
本当は日本語でメッセージを埋め込みたいところですが、どうやらマルチバイトを使うとencode()内で使っているlsb_encode()でエラーが出るのでローマ字表記とします。
出力はpngのみのようなのでその点ご注意ください。

# 隠すメッセージを作成
txt <- "asu wa 20ji ni itumo no mise de"
# メッセージを画像にエンコード
# 出力はpngオンリー
stegasaur::encode(content = txt, file_in = "社内パーティ_240702.png", file_out = "社内パーティ_240702.png")

出来上がった画像が下記です。
何も変わりませんね。

メッセージを読み取る

今度は上記画像からメッセージを読み取ってみましょう。

# メッセージをデコード
decoded_msg <- stegasaur::decode("社内パーティ_240702.png")
print(decoded_msg)
> print(decoded_msg)  
[1] "asu wa 20ji ni itumo no mise de"

無事読み取れました。
みなさんもご活用ください!

Discussion