データの暗号化
조회 수: 18 (최근 30일)
이전 댓글 표시
データを暗号化する方法を教えてください。
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 次郎君
自分だでは、上記のように復元する方法はありますでしょうか。
댓글 수: 0
채택된 답변
Kojiro Saito
2024년 10월 29일
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
2024년 10월 29일
R2022aのアップデートでWindowsでのシステムエンコーディングがUTF-8になったのですが、R2020bだと日本語ではShift-JISのエンコーディングが使われ、AES.mのdecrypt関数の中で文字化けを起こしていたようです。エンコーディングが原因でしたので、対処された方法で問題ありません。
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!