データの暗号化

68 visualizzazioni (ultimi 30 giorni)
syota papa
syota papa il 28 Ott 2024 alle 23:06
Commentato: syota papa il 29 Ott 2024 alle 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  次郎君
自分だでは、上記のように復元する方法はありますでしょうか。

Risposta accettata

Kojiro Saito
Kojiro Saito il 29 Ott 2024 alle 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 Commenti
Kojiro Saito
Kojiro Saito il 29 Ott 2024 alle 13:23
R2022aのアップデートでWindowsでのシステムエンコーディングがUTF-8になったのですが、R2020bだと日本語ではShift-JISのエンコーディングが使われ、AES.mのdecrypt関数の中で文字化けを起こしていたようです。エンコーディングが原因でしたので、対処された方法で問題ありません。
syota papa
syota papa il 29 Ott 2024 alle 14:16
お調べいただきありがとうございます!
暗号化も複合化も上手くいきました~
VBAで実装したものがあったのですが、実行に時間がかかりそうだったので、
並列計算可能なMATLABを期待しておりました。
今別のプログラムに実装したのですが、VBAと同様に、時間はかかりそうな雰囲気ですね。。
やむを得ない気はしますが。

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su ビッグ データの処理 in Help Center e File Exchange

Prodotti


Release

R2020b

Community Treasure Hunt

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

Start Hunting!