データの暗号化

68 ビュー (過去 30 日間)
syota papa
syota papa 2024 年 10 月 28 日 23:06
コメント済み: syota papa 2024 年 10 月 29 日 14:16
データを暗号化する方法を教えてください。
A列 B列 C列
1 0 花子さん
1 2  太郎さん
1 1  次郎君
というcsvデータのC列について、何らかの方法で暗号化して
A列 B列 C列
1 0 *********
1 2  *********
1 1  *********
という風に第3者がわからないデータに加工し
A列 B列 C列
1 0 花子さん
1 2  太郎さん
1 1  次郎君
自分だでは、上記のように復元する方法はありますでしょうか。

採用された回答

Kojiro Saito
Kojiro Saito 2024 年 10 月 29 日 8:51
File ExchangeにあるMatlab AES Encryption Decryption Exampleを使えばパスワードで文字列のハッシュ化と、ハッシュ値からの文字列復元ができます。
AES.mをダウンロードして、secretKeyの部分をご自身の好きなパスワードに変更して使ってみてください。
% 読み込むCSVファイル
filename = 'data.csv';
opts = detectImportOptions(filename, 'TextType', 'string'); % 文字列をstring型で読み込む
data = readtable(filename, opts);
% パスワードを任意の文字に変更する
secretKey = "password";
algorithm = "SHA-1";
aes = AES(secretKey, algorithm);
% テーブルのHashedカラムに3列目の文字列をハッシュ値にする
data.Hashed = arrayfun(@aes.encrypt, data.Var3);
% 元の3列目は書き込むテーブルから削除する
tableToWrite = removevars(data, 3);
% 第3者に提供するCSVファイルを作成。ハッシュ値には記号も含まれるため、カンマ区切りではなくタブ区切りにする
writetable(tableToWrite, "out.csv", "Delimiter", "\t")
%% ハッシュ値が含まれるCSVファイルからデータを復元
t = readtable("out.csv");
secretKey = "password"; % ハッシュ化したときと同じパスワード
algorithm = "SHA-1";
aes = AES(secretKey, algorithm);
% Hashedカラムから元のデータを復元してName列に入れる
t.Name = arrayfun(@aes.decrypt, t.Hashed);
  11 件のコメント
Kojiro Saito
Kojiro Saito 2024 年 10 月 29 日 13:23
R2022aのアップデートでWindowsでのシステムエンコーディングがUTF-8になったのですが、R2020bだと日本語ではShift-JISのエンコーディングが使われ、AES.mのdecrypt関数の中で文字化けを起こしていたようです。エンコーディングが原因でしたので、対処された方法で問題ありません。
syota papa
syota papa 2024 年 10 月 29 日 14:16
お調べいただきありがとうございます!
暗号化も複合化も上手くいきました~
VBAで実装したものがあったのですが、実行に時間がかかりそうだったので、
並列計算可能なMATLABを期待しておりました。
今別のプログラムに実装したのですが、VBAと同様に、時間はかかりそうな雰囲気ですね。。
やむを得ない気はしますが。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeビッグ データの処理 についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!