データの暗号化
이 질문을 팔로우합니다.
- 팔로우하는 게시물 피드에서 업데이트를 확인할 수 있습니다.
- 정보 수신 기본 설정에 따라 이메일을 받을 수 있습니다.
오류 발생
페이지가 변경되었기 때문에 동작을 완료할 수 없습니다. 업데이트된 상태를 보려면 페이지를 다시 불러오십시오.
이전 댓글 표시
0 개 추천
データを暗号化する方法を教えてください。
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
2024년 10월 29일
1 개 추천
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
syota papa
2024년 10월 29일
回答いただきありがとうございます。
動作確認後、またコメントさせていただきます。
syota papa
2024년 10월 29일
aes = AES(secretKey, algorithm)
の箇所で以下のエラーが発生しますが、どのように対象すればよろしいでしょうか。
エラー: AES
エラー: ファイル: AES.m、行: 1、列: 10
クラス名とファイル名が一致しなければなりません。
Kojiro Saito
2024년 10월 29일
クラス名とファイル名が一致しないというのは、classdefで定義されているクラス名 (ここではAES)と、.mのファイル名 (AES.m)が一致していないということです。ファイルを添付しますので、取り急ぎこちらでうまく動くか確認していただけますでしょうか。
syota papa
2024년 10월 29일
本体プログラムと同じフォルダに@AESというフォルダを作成して、その配下に「AES.m」を入れることで
解決いたしました。
ちなみに暗号化はできましたが、復元ができません。(文字化けしていました。。)
syota papa
2024년 10월 29일
ありがとうございます。いただいたファイルで差し替えも行い、実行はできました。
ただし、以前復元はできておりません。。
もう少し試してみます。(日本語だから上手く暗号化されない、といったことはありますでしょうか。)
syota papa
2024년 10월 29일
アルファベットに置き換えたところ、しっかりと復元されていました。
日本語については、対応していない可能性がありますね。
Kojiro Saito
2024년 10월 29일
私の環境 (R2024b)では、質問にあった花子さん、太郎さん、の日本語カラムでも復元できています。環境の違いでしょうか。
File Exchangeからダウンロードするのが正なので、先程の添付ファイルは一旦削除しますね。
syota papa
2024년 10월 29일
承知しました。環境の違いによるものかもしれません。。
R2020bでは上手くいかない(?)可能性がある、ということで承知しました。
色々と教えていただきありがとうございました。
syota papa
2024년 10월 29일
推奨されている方法かわかりませんが、AES.mについて、"UTF-8"となっている箇所2箇所を"Shift_JIS"に置換して再度実行すると、上手くいきました。
Kojiro Saito
2024년 10월 29일
R2022aのアップデートでWindowsでのシステムエンコーディングがUTF-8になったのですが、R2020bだと日本語ではShift-JISのエンコーディングが使われ、AES.mのdecrypt関数の中で文字化けを起こしていたようです。エンコーディングが原因でしたので、対処された方法で問題ありません。
syota papa
2024년 10월 29일
お調べいただきありがとうございます!
暗号化も複合化も上手くいきました~
VBAで実装したものがあったのですが、実行に時間がかかりそうだったので、
並列計算可能なMATLABを期待しておりました。
今別のプログラムに実装したのですが、VBAと同様に、時間はかかりそうな雰囲気ですね。。
やむを得ない気はしますが。
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Octave에 대해 자세히 알아보기
태그
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)